public async Task <IActionResult> Login([FromBody] LoginRequest request)
        {
            try
            {
                var userDto = await _userService.GetByUserName(request.UserName);

                var isCorrect = await _userService.CheckPassword(request.Password, userDto.Email);

                if (isCorrect)
                {
                    JwtAuthResult jwtResult = await _jwtAuthManager.GenerateToken(userDto, DateTime.Now);

                    return(Ok(jwtResult.AccessToken));
                }

                return(BadRequest("Password is not correct"));
            }
            catch (UserNotFoundException e)
            {
                Log.Error(e.Message);
                return(BadRequest(e.Message));
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                return(BadRequest());
            }
        }
Example #2
0
        public async Task <ActionResult <JwtAuthResult> > SignUp([FromBody] SignUpRequest request)
        {
            UserResponse userResult = await m_userService.SignUp(request);

            JwtAuthResult authResult = await m_authManager.GenerateToken(userResult.UserName, userResult.Claims);

            return(Ok(authResult));
        }
Example #3
0
        public async Task <IAuthorizeResult <Model> > Handle(Query request, CancellationToken cancellationToken)
        {
            _httpContextAccessor.HttpContext !.Request.Headers.TryGetValue("Origin", out var origin);
            _logger.LogInformation("Site Login Request Initialized from Url: {Origin}", origin);

            var discordUser = await _discordAuthManager.GetDiscordUserAsync(request.Bearer);

            if (discordUser is null)
            {
                _logger.LogWarning("Site Login Request Denied: Invalid Token");
                return(AuthorizeResult <Model> .Forbidden());
            }

            _logger.LogInformation("Site Login Request Accepted");
            var claims = new List <Claim>
            {
                new(Claims.DiscordBearer, request.Bearer),
                new(Claims.DiscordUserId, discordUser.User.Id)
            };

            _logger.LogInformation("Generating JWT Access Token");
            var token = _jwtAuthManager.GenerateToken(claims, DateTime.UtcNow.AddHours(4));

            _logger.LogInformation("JWT Access Token Successfully Generated");

            return(AuthorizeResult <Model> .Success(new Model { Token = token }));
        }
Example #4
0
        public async Task <IActionResult> Login([FromBody] LoginAuthRequest loginRequest)
        {
            GoogleApiTokenInfo tokenInfo = await ValidateGoogleTokenAsync(loginRequest.AccessToken);

            if (tokenInfo.UserId is null)
            {
                return(BadRequest("The access token was invalid"));
            }

            var user = await _context.AppUser
                       .SingleOrDefaultAsync(x => x.AuthId == tokenInfo.UserId);

            if (user is null)
            {
                return(BadRequest("User does not exist"));
            }

            await _signInManager.SignInAsync(user, false);

            var claims = await _userManager.GetClaimsAsync(user);

            var token = _jwtAuthManager.GenerateToken(claims, DateTime.Now);

            return(Ok(new{ token }));
        }
Example #5
0
            public Task <Result <Model, AuthorizeStatus> > Handle(Query request,
                                                                  CancellationToken cancellationToken)
            {
                _httpContextAccessor.HttpContext !.Request.Headers.TryGetValue("Origin", out var origin);
                _logger.LogInformation($"Bot Authorize Request Initialized from Url: {origin.ToString()}");
                if (request.Key != _apiKey.Key)
                {
                    _logger.LogInformation("Bot Authorize Request Denied: Invalid Key");
                    return(Task.FromResult(AuthorizeResult <Model> .Forbidden()));
                }

                _logger.LogInformation("Bot Authorize Request Accepted");

                _logger.LogInformation($"Generating Claim: {Claims.BotApiKey}");
                var claims = new[]
                {
                    new Claim(Claims.BotApiKey, request.Key)
                };

                _logger.LogInformation("Generating JWT Access Token");
                var token = _jwtAuthManager.GenerateToken(claims, DateTime.Now);

                _logger.LogInformation("JWT Access Token Successfully Generated");

                return(Task.FromResult(AuthorizeResult <Model> .Success(new Model()
                {
                    Token = token
                })));
            }
Example #6
0
        public async Task <IActionResult> Rgister([FromBody] RegisterRequest request)
        {
            try
            {
                JwtAuthResult jwtAuthResult = null;
                if ((await _userService.GetByEmail(request.Email)) == null)
                {
                    var passwHash   = Text.EncryptSHA256(request.Password);
                    var defaultRole = (await _roleService.GetRoles())
                                      .FirstOrDefault(r => r.Name.Equals("User"));
                    var userDto = new UserDto()
                    {
                        Id           = Guid.NewGuid(),
                        Email        = request.Email,
                        FirstName    = request.FirstName,
                        LastName     = request.LastName,
                        PasswordHash = passwHash,
                        RoleId       = defaultRole.Id,
                        RoleName     = defaultRole.Name
                    };

                    var userRegistered = await _userService.Register(userDto);

                    if (userRegistered)
                    {
                        jwtAuthResult = await _jwtAuthManager.GenerateToken(userDto);
                    }
                    else
                    {
                        return(BadRequest("User with such email already exists."));
                    }
                }
                return(Ok(jwtAuthResult));
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                return(StatusCode(500, "Unsuccessful registration."));
            }
        }
        public IActionResult Login([FromForm, FromBody] LoginRequest request)
        {
            if (!_userService.IsValidUserCredentials(request.UserName, request.Password))
            {
                return(Unauthorized());
            }

            var claims = new[] { new Claim(ClaimTypes.Name, request.UserName) };
            var token  = _jwtAuthManager.GenerateToken(request.UserName, claims, DateTime.UtcNow);

            _logger.LogInformation($"User [{request.UserName}] logged in the system.");

            return(Ok(new LoginResponse
            {
                UserName = request.UserName,
                AccessToken = token
            }));
        }