/// <summary> /// user registration /// </summary> /// <param name="newUser"></param> /// <returns></returns> public SimpleAuthResult TryCreateUser(SimpleAuthUser newUser) { var hashedPassword = HashPassword(newUser.OriginPassword); using (var context = new SimpleUserDbContext()) { var userWithUserName = context.LoginUser.FirstOrDefault(x => x.UserName == newUser.UserName); if (userWithUserName != null) { return(SimpleAuthResult.Fail(string.Format("user with name '{0}' already exists", newUser))); } var loginUser = new LoginUser() { UserName = newUser.UserName, PasswordHash = hashedPassword, Email = newUser.Email, Phone = newUser.Phone }; context.LoginUser.Add(loginUser); context.SaveChanges(); return(SimpleAuthResult.Success()); } }
public SimpleAuthResult <TokenEntity> UserCrendentialLogin(string username, string password) { using (var context = new SimpleUserDbContext()) { var tryFindUser = context.LoginUser.FirstOrDefault(x => x.UserName == username); if (tryFindUser == null) { return(SimpleAuthResult <TokenEntity> .Fail(string.Format("user name with '{0}' is not found .", username))); } var hashedPassword = HashPassword(password); if (tryFindUser.PasswordHash != hashedPassword) { return(SimpleAuthResult <TokenEntity> .Fail("user password is not correct")); } if (_isSso) { _provider.RemoveTokenFor(tryFindUser.Id); } ////issue a new token for password login var newToken = _provider.CreateNew(tryFindUser.Id); return(SimpleAuthResult <TokenEntity> .Success(newToken)); } }
public SimpleAuthResult <TokenEntity> TokenLoginAndRefresh(string refreshToken) { var result = _provider.UpdateRefresh(refreshToken); if (result.IsSuccess) { return(SimpleAuthResult <TokenEntity> .Success(result.NewToken)); } else { return(SimpleAuthResult <TokenEntity> .Fail(result.Error)); } }
public SimpleAuthResult TokenLogin(string accessToken) { var result = _provider.VerifyToken(accessToken); if (result.IsSuccess) { return(SimpleAuthResult.Success()); } else { return(SimpleAuthResult.Fail(result.Error)); } }
public SimpleAuthResult ChangePassword(long userId, string oldpassword, string password, string confirmPassword) { if (string.IsNullOrWhiteSpace(oldpassword) || string.IsNullOrWhiteSpace(password) || string.IsNullOrWhiteSpace(confirmPassword)) { return(SimpleAuthResult.Fail("password field can not be empty")); } using (var context = new SimpleUserDbContext()) { var user = context.LoginUser.FirstOrDefault(x => x.Id == userId); if (user == null) { return(SimpleAuthResult.Fail(string.Format("user with id '{0}' not found", userId))); } var hashedOldPassword = HashPassword(oldpassword); if (hashedOldPassword != user.PasswordHash) { return(SimpleAuthResult.Fail("current password is incorrect.")); } if (password != confirmPassword) { return(SimpleAuthResult.Fail("password does not match confirm password.")); } //// apply more rules here //// ... var hashedPassword = HashPassword(password); if (hashedPassword == user.PasswordHash) { return(SimpleAuthResult.Fail("password can not be same with current password.")); } user.PasswordHash = hashedPassword; context.SaveChanges(); return(SimpleAuthResult.Success()); } }