diff --git a/MECF.Framework.Common/Aitex/Core/Account/AccountService.cs b/MECF.Framework.Common/Aitex/Core/Account/AccountService.cs index d595a17..8d16e1c 100644 --- a/MECF.Framework.Common/Aitex/Core/Account/AccountService.cs +++ b/MECF.Framework.Common/Aitex/Core/Account/AccountService.cs @@ -230,20 +230,20 @@ namespace Aitex.Core.Account AccountExManager.Instance.CancelLoginRequest(userName); } - public void ConfirmLoginRequest(Credential requestingCred) + public void ConfirmLoginRequest(string userName) { - AccountExManager.Instance.ConfirmedLoginRequest(requestingCred); + AccountExManager.Instance.ConfirmedLoginRequest(userName); } - public void RejectLoginRequest(Credential requestingCred) + public void RejectLoginRequest(string userName) { - AccountExManager.Instance.RejectLoginRequest(requestingCred); + AccountExManager.Instance.RejectLoginRequest(userName); } - public void LogoutEx(Credential cred) + public void LogoutEx(Guid myToken) { - AccountExManager.Instance.Logout(cred); + AccountExManager.Instance.Logout(myToken); } /// @@ -251,9 +251,9 @@ namespace Aitex.Core.Account /// /// 客户端登录凭据令牌。 /// - public CredentialKeepAliveResults KeepAlive(Credential cred) + public CredentialKeepAliveResults KeepAlive(Guid myToken) { - return CredentialManager.Instance.KeepAlive(cred); + return CredentialManager.Instance.KeepAlive(myToken); } } } diff --git a/MECF.Framework.Common/Aitex/Core/Account/CredentialManager.cs b/MECF.Framework.Common/Aitex/Core/Account/CredentialManager.cs index ac24840..757aa0a 100644 --- a/MECF.Framework.Common/Aitex/Core/Account/CredentialManager.cs +++ b/MECF.Framework.Common/Aitex/Core/Account/CredentialManager.cs @@ -199,17 +199,17 @@ public class CredentialManager : Singleton /// /// 客户端登录凭据 /// - public CredentialKeepAliveResults KeepAlive(Credential cred) + public CredentialKeepAliveResults KeepAlive(Guid myToken) { lock (_syncRoot) { - if (_dictCredentialsLoggedIn.TryGetValue(cred.Token, out var loginCred)) + if (_dictCredentialsLoggedIn.TryGetValue(myToken, out var loginCred)) { loginCred.LastAliveTime = DateTime.Now; // 刷新时间 // 如果当前用户名在请求登录列表中,则返回CredentialKeepAliveResults.RequestingLogin,通知 // 已登录的客户端,当前用户正在请求异地登录。 - return _dictCredentialsRequesting.ContainsKey(cred.AccountInfo.LoginName) + return _dictCredentialsRequesting.ContainsKey(loginCred.AccountInfo.LoginName) ? CredentialKeepAliveResults.RequestingLogin : CredentialKeepAliveResults.Alive; } diff --git a/MECF.Framework.Common/Aitex/Core/Account/IAccountService.cs b/MECF.Framework.Common/Aitex/Core/Account/IAccountService.cs index f934ecb..370568d 100644 --- a/MECF.Framework.Common/Aitex/Core/Account/IAccountService.cs +++ b/MECF.Framework.Common/Aitex/Core/Account/IAccountService.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.ServiceModel; using System.Threading.Tasks; @@ -57,7 +58,6 @@ namespace Aitex.Core.Account #endregion - #region Permission Operations @@ -87,7 +87,6 @@ namespace Aitex.Core.Account #endregion - #region Role Operations /// @@ -137,7 +136,6 @@ namespace Aitex.Core.Account #endregion - #region Account Operations /// @@ -253,9 +251,9 @@ namespace Aitex.Core.Account /// /// ע¼ /// - /// ƾ + /// ǰ¼ [OperationContract] - void LogoutEx(Credential cred); + void LogoutEx(Guid myToken); /// /// ȡ¼ @@ -267,25 +265,24 @@ namespace Aitex.Core.Account /// /// ȷص¼ /// - /// + /// ¼ [OperationContract] - void ConfirmLoginRequest(Credential requestingCred); + void ConfirmLoginRequest(string userName); /// /// ܾص¼ /// - /// + /// ¼ [OperationContract] - void RejectLoginRequest(Credential requestingCred); - + void RejectLoginRequest(string userName); /// /// ƾݡ /// - /// ƾ + /// ǰ¼ /// [OperationContract] - CredentialKeepAliveResults KeepAlive(Credential cred); + CredentialKeepAliveResults KeepAlive(Guid myToken); #endregion } diff --git a/MECF.Framework.Common/MECF.Framework.Common.csproj b/MECF.Framework.Common/MECF.Framework.Common.csproj index a0cf793..b5db731 100644 --- a/MECF.Framework.Common/MECF.Framework.Common.csproj +++ b/MECF.Framework.Common/MECF.Framework.Common.csproj @@ -577,6 +577,7 @@ + diff --git a/MECF.Framework.Common/MECF/Framework/Common/Account/AccountExManager.cs b/MECF.Framework.Common/MECF/Framework/Common/Account/AccountExManager.cs index 7311fa0..18c678b 100644 --- a/MECF.Framework.Common/MECF/Framework/Common/Account/AccountExManager.cs +++ b/MECF.Framework.Common/MECF/Framework/Common/Account/AccountExManager.cs @@ -285,10 +285,10 @@ namespace MECF.Framework.Common.Account /// /// 确认登录请求。 /// - /// - internal void ConfirmedLoginRequest(Credential requestingCred) + /// + internal void ConfirmedLoginRequest(string userName) { - var cred = CredentialManager.Instance.GetRequestingCredential(requestingCred.AccountInfo.LoginName); + var cred = CredentialManager.Instance.GetRequestingCredential(userName); if (cred != null) cred.State = CredentialState.Confirmed; } @@ -296,24 +296,24 @@ namespace MECF.Framework.Common.Account /// /// 拒绝登录请求。 /// - /// - internal void RejectLoginRequest(Credential requestingCred) + /// + internal void RejectLoginRequest(string userName) { - var cred = CredentialManager.Instance.GetRequestingCredential(requestingCred.AccountInfo.LoginName); + var cred = CredentialManager.Instance.GetRequestingCredential(userName); if (cred != null) cred.State = CredentialState.Reject; } - internal void Logout(Credential cred) + internal void Logout(Guid myToken) { - var loginCred = CredentialManager.Instance.GetCredential(cred.Token); + var loginCred = CredentialManager.Instance.GetCredential(myToken); if (loginCred != null) { EV.PostMessage(ModuleName.System.ToString(), EventEnum.UserLoggedOff, $"{loginCred.AccountInfo.LoginName}@{loginCred.LoginIP}:{loginCred.LoginPort}"); } - CredentialManager.Instance.Remove(cred.Token); + CredentialManager.Instance.Remove(myToken); } #endregion diff --git a/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/ReadOnlyRole.cs b/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/ReadOnlyRole.cs new file mode 100644 index 0000000..7a47a52 --- /dev/null +++ b/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/ReadOnlyRole.cs @@ -0,0 +1,25 @@ +using MECF.Framework.Common.Account; +using MECF.Framework.Common.Account.Extends; + +namespace MECF.Framework.Common.MECF.Framework.Common.Account.Extends +{ + /// + /// 只读权限的角色。 + /// + public class ReadOnlyRole : Role + { + #region Constructors + + public ReadOnlyRole() : base("-1", "ReadOnly", false, 0, null, true, "") + { + + } + + #endregion + + public override MenuPermissionEnum GetPermission(string name) + { + return MenuPermissionEnum.MP_NONE; + } + } +} diff --git a/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/Role.cs b/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/Role.cs index a8d45ea..a76d5ea 100644 --- a/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/Role.cs +++ b/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/Role.cs @@ -19,9 +19,9 @@ namespace MECF.Framework.Common.Account.Extends private string _permissionContent; private string _description; - #endregion + #endregion - #region Constructors + #region Constructors /// /// 构造角色的对象实例。 @@ -146,7 +146,7 @@ namespace MECF.Framework.Common.Account.Extends /// /// /// - public MenuPermissionEnum GetPermission(string name) + public virtual MenuPermissionEnum GetPermission(string name) { if (PermissionControlItems.TryGetValue(name, out var permissionEnum)) return permissionEnum; diff --git a/MECF.Framework.Common/MECF/Framework/UI/Core/Accounts/AccountServiceClient.cs b/MECF.Framework.Common/MECF/Framework/UI/Core/Accounts/AccountServiceClient.cs index cc6e4cf..939bc03 100644 --- a/MECF.Framework.Common/MECF/Framework/UI/Core/Accounts/AccountServiceClient.cs +++ b/MECF.Framework.Common/MECF/Framework/UI/Core/Accounts/AccountServiceClient.cs @@ -290,36 +290,36 @@ namespace MECF.Framework.UI.Core.Accounts }); } - public void ConfirmLoginRequest(Credential requestingCred) + public void ConfirmLoginRequest(string userName) { WCFProxy.Using(delegate(IAccountService svc) { - svc.ConfirmLoginRequest(requestingCred); + svc.ConfirmLoginRequest(userName); }); } - public void RejectLoginRequest(Credential requestingCred) + public void RejectLoginRequest(string userName) { WCFProxy.Using(delegate(IAccountService svc) { - svc.RejectLoginRequest(requestingCred); + svc.RejectLoginRequest(userName); }); } - public void LogoutEx(Credential cred) + public void LogoutEx(Guid myToken) { WCFProxy.Using(delegate(IAccountService svc) { - svc.LogoutEx(cred); + svc.LogoutEx(myToken); }); } - public CredentialKeepAliveResults KeepAlive(Credential cred) + public CredentialKeepAliveResults KeepAlive(Guid myToken) { var result = CredentialKeepAliveResults.NotFound; WCFProxy.Using(delegate(IAccountService svc) { - result = svc.KeepAlive(cred); + result = svc.KeepAlive(myToken); }); return result; } diff --git a/UIDebug/UserLoginTester/Program.cs b/UIDebug/UserLoginTester/Program.cs index 06d2569..d4b1276 100644 --- a/UIDebug/UserLoginTester/Program.cs +++ b/UIDebug/UserLoginTester/Program.cs @@ -22,11 +22,27 @@ namespace UserLoginTester Console.WriteLine(@"Accounts:"); foreach (var acc in accounts) { - Console.WriteLine($@" {acc.LoginName}"); + Console.WriteLine($@" {acc.LoginName}"); } Console.ResetColor(); - while (true) + var ret = await AccountClient.Instance.Service.LoginEx("admin", "admin", "0", new LoginClientInfo()); + if (ret.Result == LoginRequestResults.Confirmed) + { + Console.WriteLine("Login Succeeded!"); + } + else + { + Console.WriteLine($"Login Failed, {ret.Result}"); + } + + Console.WriteLine("Press ENTER to exit..."); + Console.ReadLine(); + AccountClient.Instance.Service.LogoutEx(ret.Credential.Token); + + + /* + while (true) { var cmd = WaitCommand(); if(string.IsNullOrEmpty(cmd)) @@ -37,6 +53,7 @@ namespace UserLoginTester ParseCommand(cmd); } + */ } private static string WaitCommand() @@ -88,7 +105,7 @@ namespace UserLoginTester private static void LogoutProcess() { - AccountClient.Instance.Service.LogoutEx(_loginCred); + AccountClient.Instance.Service.LogoutEx(_loginCred.Token); } private static void Instance_OnDisconnectedWithRT() @@ -121,11 +138,11 @@ namespace UserLoginTester switch (ack) { case "Y": - AccountClient.Instance.Service.ConfirmLoginRequest(requestingCred); - AccountClient.Instance.Service.LogoutEx(_loginCred); + AccountClient.Instance.Service.ConfirmLoginRequest(requestingCred.AccountInfo.LoginName); + AccountClient.Instance.Service.LogoutEx(_loginCred.Token); break; case "N": - AccountClient.Instance.Service.RejectLoginRequest(requestingCred); + AccountClient.Instance.Service.RejectLoginRequest(requestingCred.AccountInfo.LoginName); break; default: goto __prompt;