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