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); }