public async Task <IActionResult> Login([FromBody] LoginDto loginDto) { var user = await _userManager.FindByEmailAsync(loginDto.Email); if (user == null) { return(NotFound()); } else { var result = await _signInManager.CheckPasswordSignInAsync(user, loginDto.Password, false); if (result.Succeeded) { var token = await _tokenHelper.CreateAccessToken(user); var refreshToken = _tokenHelper.CreateRefreshToken(); user.RefreshToken = refreshToken; await _userManager.UpdateAsync(user); return(Ok(new { AccessToken = token, RefreshToken = refreshToken })); } else { return(BadRequest("Failed to login, try again")); } } }
} //injected by IOC public T Authorize <T>(DataModels.ITokenRequest Request, OAuth2.DataModels.Client Client = null) where T : DataModels.Token, new() { var accounts = AccountModel.GetAccount(Request.username, Request.password); if (accounts == null || accounts.Count == 0) { throw TokenErrorUtility.CreateError(DataModels.ErrorCodes.invalid_request, "Invalid username or password", Request); } DataModels.ResourceOwner owner = new DataModels.ResourceOwner() { id = accounts[0].username, time = DateTime.UtcNow.Millisecond, attributes = accounts[0].ToDictonary(), }; ResourceOwnerModel.CreateOrUpdate(owner); T token = TokenModel.InsertToken <T>( TokenHelper.CreateAccessToken(), DataModels.TokenTypes.bearer, 3600, DateTime.UtcNow.GetTotalSeconds(), Client, TokenHelper.IntersectScopes(Request.scope, Client.allowed_scope), owner); if (token == null) { throw new OAuth2.DataModels.TokenRequestError(DataModels.ErrorCodes.server_error, "Unable to store access token"); } return(token); }
} //injected by IOC public T Authorize <T>(DataModels.ITokenRequest Request, OAuth2.DataModels.Client Client = null) where T : DataModels.Token, new() { using (IDbConnection db = DBFactory.Open()) { T token = TokenModel.InsertToken <T>( TokenHelper.CreateAccessToken(), DataModels.TokenTypes.bearer, 3600, DateTime.UtcNow.GetTotalSeconds(), Client, Client.allowed_scope); int res = db.Execute( "INSERT INTO AccessToken (access_token, client_id, expires_in, scope) VALUES (@access_token, @client_id, @expires_in, @scope);", token ); if (token == null) { throw new OAuth2.DataModels.TokenRequestError() { error = DataModels.ErrorCodes.server_error, error_description = "Unable to store token", }; } return(token); } }
} //injected by IOC public T Authorize <T>(OAuth2.DataModels.Client Client = null, OAuth2.DataModels.ResourceOwner Owner = null, string Scope = "") where T : DataModels.Token, new() { T token = TokenModel.InsertToken <T>( TokenHelper.CreateAccessToken(), DataModels.TokenTypes.bearer, 3600, DateTime.UtcNow.GetTotalSeconds(), Client, Scope, Owner); if (token == null) { throw new OAuth2.DataModels.TokenRequestError(DataModels.ErrorCodes.server_error, "Unable to store access token"); } return(token); }
public void ValidateLifetime_TrueIfUnexpired() { var issuedAt = DateTime.Now; var expiration = issuedAt + TimeSpan.FromSeconds(70); var tokens = new Tokens() { AccessToken = TokenHelper.CreateAccessToken(issuedAt, expiration), RefreshToken = null }; // SUT Assert.That(tokens.ValidateLifetime(), Is.True); }
public async Task <UserSummaryViewModel> loginUser(UserLoginViewModel model) { var user = await userRepository.findUserByUsername(model.username); if (user == null) { throw new UserNotFoundException("Username not found, please make sure the username is correct"); } if (Validator.isNullOrEmpty(model.password)) { throw new InvalidDataException("Password cannot be null"); } if (!BCrypt.Net.BCrypt.Verify(model.password, user.password)) { throw new InvalidDataException("Password incorrect"); } var result = mapper.Map <User, UserSummaryViewModel>(user); result.refreshToken = TokenHelper.createRefreshToken(user, setting.tokenKey, setting.refeshTokenDuration); result.accessToken = TokenHelper.CreateAccessToken(user, setting.tokenKey, setting.accessTokenDuration); return(result); }