Beispiel #1
0
        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
            });
        }
Beispiel #2
0
        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);
        }