Ejemplo n.º 1
0
        public async Task <Response> Handle(SignInUserCommand request, CancellationToken cancellationToken)
        {
            var result = await _signInService.SignInUser(request.UserName, request.Password);

            if (result.Error != null)
            {
                return(result);
            }

            var user = await _context.Users.Include(r => r.UserRoles).ThenInclude(r => r.Role).FirstOrDefaultAsync();

            var userRoles   = user.UserRoles.Select(d => d.Role.Name).ToList();
            var jwtToken    = _jWTService.GenerateJWT(user, userRoles);
            var tokenResult = new
            {
                token     = jwtToken,
                type      = "Bearer",
                expired   = DateTime.Now.AddMinutes(720),
                roles     = userRoles,
                email     = user.Email,
                firstName = user.FirstName,
                lastName  = user.LastName
            };

            return(new Response(tokenResult));
        }
Ejemplo n.º 2
0
        public async Task <TokenResult> Handle(RegisterUserCommand request, CancellationToken cancellationToken)
        {
            if (await _context.Users.AnyAsync(x => x.Login == request.Login))
            {
                throw new BadRequestException("This login exists");
            }
            User user = new(){ Login = request.Login, Password = _hashPassword.Hash(request.Password) };
            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync(cancellationToken);

            return(new(){ AccessToken = _iJWTService.GenerateJWT(user) });
        }
    }
Ejemplo n.º 3
0
        public async Task <TokenResult> Handle(LoginUserCommand request, CancellationToken cancellationToken)
        {
            User user = await _context.Users.FirstOrDefaultAsync(x => x.Login == request.Login && x.Password == _hashPassword.Hash(request.Password)) ?? throw new BadRequestException("Login or password is incorrect");

            return(new(){ AccessToken = _IJWTService.GenerateJWT(user) });
        }