Пример #1
0
        public IActionResult Redirect()
        {
            var jwtToken = _JwtService.GenerateJwt(User);

            // temporary claim payload redirect solution for demo purposes
            return(Redirect(_FrontendService.RedirectSuccesfullLogin(jwtToken)));
        }
Пример #2
0
        public async Task <IActionResult> Login(LoginViewModel model)
        {
            Logger.LogInformation("Login action has been requested.");

            if (!ModelState.IsValid)
            {
                Logger.LogWarning("Bad request, ModelState is invalid");

                return(new OkObjectResult(new LoginResponseModel()
                {
                    Content = new { },
                    StatusCode = HttpStatusCode.BadRequest,
                    Error = "bad_request",
                    Description = "Bad Request."
                }));
            }

            ClaimsIdentity identity = await JwtService.GetClaimsIdentity(model.UserName, model.Password);

            if (identity == null)
            {
                Logger.LogWarning("Faild to get user claims.");

                return(new JsonResult(new LoginResponseModel()
                {
                    Content = new { },
                    StatusCode = HttpStatusCode.Unauthorized,
                    Error = "login_failure",
                    Description = "Faild to login. Please verify your username or password."
                }));
            }

            string jwtResponse = await JwtService
                                 .GenerateJwt(identity, JwtService, model.UserName, _jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented });

            Logger.LogInformation("JwtToken has succesfully been created");

            return(new OkObjectResult(jwtResponse));
        }
Пример #3
0
        public async Task <UserManagerResponse> Login([FromBody] LoginModelDto model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                return(new UserManagerResponse
                {
                    IsSucces = false,
                    Message = "User with such email doesn't exist"
                });
            }
            var checkingPasswordResult = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);

            if (checkingPasswordResult.Succeeded)
            {
                return(await JwtService.GenerateJwt(user, _userManager, _authenticationOptions));
            }

            return(new UserManagerResponse
            {
                Message = "Incorect password"
            });
        }
Пример #4
0
        public async Task <UserManagerResponse> Register([FromBody] RegisterModelDto model)
        {
            if (ModelState.IsValid)
            {
                var userCheck = await _userManager.FindByEmailAsync(model.Email);

                if (userCheck == null)
                {
                    var user = new User
                    {
                        Email     = model.Email,
                        UserName  = model.Email,
                        FirstName = model.FirstName,
                        LastName  = model.LastName
                    };
                    var result = await _userManager.CreateAsync(user, model.Password);

                    if (result.Succeeded)
                    {
                        var resultRole = _roleManager.RoleExistsAsync("user").Result;
                        if (!resultRole)
                        {
                            var role       = new Role("user");
                            var roleResult = _roleManager.CreateAsync(role).Result;
                            if (!roleResult.Succeeded)
                            {
                                return(new UserManagerResponse
                                {
                                    Message = "Such User Already Exist"
                                });
                            }
                        }
                        await _userManager.AddToRoleAsync(user, "user");

                        await _signInManager.SignInAsync(user, false);

                        var encodedToken = JwtService.GenerateJwt(user, _userManager, _authenticationOptions);
                        return(await JwtService.GenerateJwt(user, _userManager, _authenticationOptions));
                    }
                    else
                    {
                        foreach (var error in result.Errors)
                        {
                            ModelState.AddModelError(string.Empty, error.Description);
                            return(new UserManagerResponse
                            {
                                Message = "Error"
                            });
                        }
                    }
                }
                return(new UserManagerResponse
                {
                    Message = "User With Such Email Already Exist",
                    IsSucces = false
                });
            }

            return(new UserManagerResponse
            {
                Message = "Successfully",
                IsSucces = true
            });
        }