using System; using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Security.Claims; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.IdentityModel.Tokens; namespace BrightGlimmer.Auth.Controllers { [Route("api/[controller]")] [ApiController] public class UserController : ControllerBase { [AllowAnonymous] [HttpGet] public ActionResult Login(string username, string password) { /* TODO: Move token creation to service */ var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.UTF8.GetBytes(Startup.Configuration.GetSection("Keys")["JwtPrivateKey"]); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.NameIdentifier, username) }), Expires = DateTime.UtcNow.AddDays(3), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var tokenSecurity = tokenHandler.CreateToken(tokenDescriptor); var token = tokenHandler.WriteToken(tokenSecurity); return new JsonResult(token); } } }