Sic.Framework-Nanjing-Baishi/UIDebug/UserLoginTester/Program.cs

90 lines
3.3 KiB
C#
Raw Normal View History

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();
AccountClient.Instance.Service.LogoutEx(retLogin.Credential);
}
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)
{
if (_loginCred != null && token == _loginCred.Token)
{
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);
AccountClient.Instance.Service.LogoutEx(_loginCred);
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;
}
}
}
}