public TokenModel GetToken(Session session) { if (session == null) { throw new ArgumentNullException(nameof(session)); } else if (session.Account == null) { throw new ArgumentException("The Account is required.", nameof(session)); } session.Key = passwordService.Create(SessionKeyLength, out byte[] keyBytes); session.UpdatedAt = dateTimeOffset.Now; return(new TokenModel { AccessToken = tokenService.Create(new ClaimsIdentity(new[] { new Claim("sub", session.Account.Uuid.ToString()) }), options.Lifetime), ExpiresIn = options.Lifetime, RefreshToken = new RefreshToken(session.Uuid, keyBytes).ToString(), TokenType = options.Type }); }
public async Task <Unit> Handle(ChangePassword request, CancellationToken cancellationToken) { Account account = appContext.Account !; if (!account.Password.Match(request.Model.Current)) { throw new InvalidCredentialException(); } account.Password = passwordService.Create(request.Model.Password); account.PasswordChangedAt = dateTimeOffset.Now; await dbContext.SaveChangesAsync(cancellationToken); return(Unit.Value); }