コード例 #1
0
        public IIdentity Logon(string username, string password, IScope context = null)
        {
            if (null == UserService)
            {
                if (Logg.IsForDebug())
                {
                    Logg.Debug("No user service");
                }
                return(null);
            }
            var user = UserService.GetUser(username);

            if (null == user && Logg.IsForDebug())
            {
                Logg.Debug("user is null");
            }
            if (!StateChecker.IsPasswordLogable(user))
            {
                Logg.Debug("user not logable");
                return(null);
            }
            var result = new Identity {
                Name = username,
                AuthenticationType = "hash"
            };
            var state = StateChecker.GetActivityState(user);

            if (state != UserActivityState.Ok)
            {
                Logg.Debug("user is in invalid state " + state);
                result.State   = state;
                result.IsError = true;
                result.Error   = new SecurityException(state.ToStr());
            }
            else
            {
                if (PasswordManager.MatchPassword(user, password))
                {
                    Logg.Debug("pass matched");
                    result.IsAuthenticated = true;
                    result.IsAdmin         = user.IsAdmin;
                    result.User            = user;
                }
                else
                {
                    Logg.Debug("pass not matched");
                    result.IsError = true;
                    result.Error   = new SecurityException("invalid hash");
                }
            }
            return(result);
        }
コード例 #2
0
        public IIdentity Logon(string username, SecureLogonInfo info, IScope context = null)
        {
            if (null == UserService)
            {
                return(null);
            }
            var user = UserService.GetUser(username);

            if (!StateChecker.IsSecureLogable(user))
            {
                return(null);
            }
            var result = new Identity {
                Name = username,
                AuthenticationType = "secure"
            };
            var state = StateChecker.GetActivityState(user);

            if (state != UserActivityState.Ok)
            {
                result.IsError = true;
                result.Error   = new SecurityException(state.ToStr());
            }
            else
            {
                try {
                    SecureLogonService.CheckSecureInfo(info, user, context);
                    result.IsAuthenticated = true;
                    result.User            = user;
                    result.IsAdmin         = user.IsAdmin;
                }
                catch (Exception e) {
                    result.IsError = true;
                    result.Error   = e;
                }
            }

            return(result);
        }