2023-09-13 18:05:49 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Aitex.Core.Account;
|
|
|
|
|
using Aitex.Core.RT.Event;
|
|
|
|
|
using Aitex.Core.WCF;
|
|
|
|
|
using MECF.Framework.UI.Core.Accounts;
|
|
|
|
|
|
|
|
|
|
namespace UserLoginTester
|
|
|
|
|
{
|
|
|
|
|
internal class Program
|
|
|
|
|
{
|
|
|
|
|
private static Credential _loginCred;
|
|
|
|
|
|
|
|
|
|
public static async Task Main(string[] args)
|
|
|
|
|
{
|
|
|
|
|
EventClient.Instance.OnEvent += Instance_OnEvent;
|
|
|
|
|
EventClient.Instance.OnDisconnectedWithRT += Instance_OnDisconnectedWithRT;
|
|
|
|
|
EventClient.Instance.Start();
|
|
|
|
|
|
|
|
|
|
var accounts = AccountClient.Instance.Service.GetAccounts();
|
|
|
|
|
foreach (var acc in accounts)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(acc.LoginName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Console.ForegroundColor = ConsoleColor.Green;
|
|
|
|
|
Console.WriteLine(@"Login by 'admin'...");
|
|
|
|
|
var retLogin = await AccountClient.Instance.Service.LoginEx("admin", "admin", "0", null);
|
|
|
|
|
_loginCred = retLogin.Credential;
|
|
|
|
|
Console.ResetColor();
|
|
|
|
|
Console.WriteLine($@"Login Result: {retLogin.Result}");
|
|
|
|
|
|
|
|
|
|
Console.WriteLine(@"Press any key to exit...");
|
|
|
|
|
Console.ReadKey();
|
|
|
|
|
|
2023-09-14 14:17:16 +08:00
|
|
|
|
AccountClient.Instance.Service.LogoutEx(retLogin.Credential);
|
2023-09-13 18:05:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void Instance_OnDisconnectedWithRT()
|
|
|
|
|
{
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void Instance_OnEvent(EventItem evt)
|
|
|
|
|
{
|
|
|
|
|
switch (evt.Type)
|
|
|
|
|
{
|
|
|
|
|
case EventType.EventUI_Notify:
|
|
|
|
|
break;
|
|
|
|
|
case EventType.Dialog_Nofity:
|
|
|
|
|
break;
|
|
|
|
|
case EventType.KickOut_Notify:
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case EventType.LoginBySameUser_Notify:
|
|
|
|
|
if (Guid.TryParse(evt.Description, out var token) && evt.Tag is Credential requestingCred)
|
|
|
|
|
{
|
2023-09-14 14:17:16 +08:00
|
|
|
|
if (_loginCred != null && token == _loginCred.Token)
|
2023-09-13 18:05:49 +08:00
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(
|
|
|
|
|
@"Some users is requesting to login the system, you will be forced to switch to read-only mode, do you agree?");
|
|
|
|
|
|
|
|
|
|
__prompt:
|
|
|
|
|
Console.Write("[Y]es/[N]o: ");
|
|
|
|
|
var ack = Console.ReadLine();
|
|
|
|
|
switch (ack)
|
|
|
|
|
{
|
|
|
|
|
case "Y":
|
|
|
|
|
AccountClient.Instance.Service.ConfirmLoginRequest(requestingCred);
|
2023-09-14 14:17:16 +08:00
|
|
|
|
AccountClient.Instance.Service.LogoutEx(_loginCred);
|
2023-09-13 18:05:49 +08:00
|
|
|
|
break;
|
|
|
|
|
case "N":
|
|
|
|
|
AccountClient.Instance.Service.RejectLoginRequest(requestingCred);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
goto __prompt;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case EventType.Sound_Notify:
|
|
|
|
|
break;
|
|
|
|
|
case EventType.UIMessage_Notify:
|
|
|
|
|
//PopUIMessage(obj);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|