Пример #1
0
        public IActionResult Login(LoginRequest loginRequest)
        {
            /* Check login and password and get claims */
            var result = _studentsDbService.CheckLogin(loginRequest);

            if (result == null)
            {
                return(Unauthorized());
            }

            /* Set login as a claim */
            Claim nameClaim = new Claim(ClaimTypes.Name, loginRequest.Login);

            /* Add login claim to the claim list */
            IEnumerable <Claim> claimsList = result.Roles.Select(role => new Claim(ClaimTypes.Role, role));
            var list = claimsList.ToList();

            list.Add(nameClaim);

            /* Return new JWT and refresh token */
            return(Ok(new
            {
                token = new JwtSecurityTokenHandler().WriteToken(GenerateJWT(list.ToArray())),
                refreshToken = result.RefreshToken
            }));
        }