Beispiel #1
0
        public async Task <IActionResult> Login([FromBody] LoginArgs args)
        {
            if (!ModelState.IsValid)
            {
                return(new BadRequestObjectResult(new ErrorsResponse(ModelState)));
            }


            LdapUser user = new LdapUser();

            try
            {
                user = await Task.Run(() => _ldap.GetUser(args.Username, args.Password));
            }
            catch (LdapConnectionException e)
            {
                _logger.LogError($"exception: {e}");
                return(StatusCode(500, new ErrorResponse("could not connect to LDAP server")));
            }
            catch (LdapUnauthorizedException e)
            {
                _logger.LogWarning($"exception: {e}");
                return(Unauthorized());
            }

            return(Ok(new TokenResponse(new JwtSecurityTokenHandler().WriteToken(_jwt.BuildToken(new[] {
                new Claim(JwtRegisteredClaimNames.Sub, user.Username),
                new Claim("name", user.DisplayName),
                new Claim("role", user.Role)
            })))));
        }