public async Task <IActionResult> Login(UserForLoginDto userForLoginDto) { userForLoginDto.Username = userForLoginDto.Username.ToLower(); // Check if dawgtag or not // SIU85[0-9]{7} Console.WriteLine("\n\n\n\nLOGGING IN"); Console.WriteLine(userForLoginDto.Username); Console.WriteLine(userForLoginDto.Password); Claim idClaim; Claim nameClaim; Claim roleClaim; Regex dawgtagRx = new Regex("siu85[0-9]{7}", RegexOptions.Compiled); if (dawgtagRx.IsMatch(userForLoginDto.Username)) { Console.WriteLine("Determined to be User."); // LDAP login LdapAuth ldapAuth = new LdapAuth(); // Validate user via LDAP if (!ldapAuth.validateUser(userForLoginDto)) { return(Unauthorized()); } // Assign security claims idClaim = new Claim(ClaimTypes.NameIdentifier, userForLoginDto.Username); nameClaim = new Claim(ClaimTypes.Name, "user"); roleClaim = new Claim(ClaimTypes.Role, "standard"); } else { // Admin login if (userForLoginDto.Username != _config.GetSection("AdminPassword:Username").Value || userForLoginDto.Password != _config.GetSection("AdminPassword:Password").Value) { return(Unauthorized()); } Console.WriteLine("Determined to be Admin"); idClaim = new Claim(ClaimTypes.NameIdentifier, userForLoginDto.Username); nameClaim = new Claim(ClaimTypes.Name, userForLoginDto.Username); roleClaim = new Claim(ClaimTypes.Role, "admin"); } var claims = new [] { idClaim, nameClaim, roleClaim }; var key = new SymmetricSecurityKey(Encoding.UTF8 .GetBytes(_config.GetSection("AppSettings:Token").Value)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); return(Ok(new { token = tokenHandler.WriteToken(token) })); }
public async Task <IActionResult> Login(UserForLoginDto userForLoginDto) { // Check if dawgtag or not // SIU85[0-9]{7} Claim idClaim; Claim nameClaim; Claim roleClaim; Regex dawgtagRx = new Regex("[Ss][Ii][Uu]85[0-9]{7}", RegexOptions.Compiled); if (dawgtagRx.IsMatch(userForLoginDto.Username)) { // LDAP login LdapAuth ldapAuth = new LdapAuth(); // Validate user via LDAP var valid = ldapAuth.validateUser(userForLoginDto); // if invalid if (!valid) { return(Unauthorized()); } // Assign security claims idClaim = new Claim(ClaimTypes.NameIdentifier, userForLoginDto.Username); nameClaim = new Claim(ClaimTypes.Name, userForLoginDto.Username); roleClaim = new Claim(ClaimTypes.Role, "standard"); } else { /** * // Admin login * * var adminFromRepo = await _repo * .Login(userForLoginDto.Username.ToLower(), userForLoginDto.Password); * * if (adminFromRepo == null) * return Unauthorized(); * * * idClaim = new Claim(ClaimTypes.NameIdentifier, adminFromRepo.Id.ToString()); * nameClaim = new Claim(ClaimTypes.Name, adminFromRepo.Username); * roleClaim = new Claim(ClaimTypes.Role, "admin"); */ idClaim = new Claim(ClaimTypes.NameIdentifier, userForLoginDto.Username); nameClaim = new Claim(ClaimTypes.Name, userForLoginDto.Username); roleClaim = new Claim(ClaimTypes.Role, "admin"); } var claims = new [] { idClaim, nameClaim, roleClaim }; var key = new SymmetricSecurityKey(Encoding.UTF8 .GetBytes(_config.GetSection("AppSettings:Token").Value)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); return(Ok(new { token = tokenHandler.WriteToken(token) })); }