public string EncodeToken(UserSimplified user) { JwtSecurityToken jwtSecurityToken = new JwtSecurityToken( Header, new JwtPayload( issuer: null, audience: null, claims: new Claim[] { new Claim("Id", user.Id.ToString()), new Claim("LastName", user.LastName), new Claim("FirstName", user.FirstName), new Claim("Birthdate", user.Birthdate.ToString()), new Claim("Login", user.Login), new Claim("Gender", user.Gender), new Claim("StatusCode", user.StatusCode.ToString()), }, notBefore: DateTime.Now, expires: DateTime.Now.AddHours(5) ) ); return(Handler.WriteToken(jwtSecurityToken)); }
internal static IEnumerable <Claim> ToCLaims(this UserSimplified user) { yield return(new Claim("Id", user.Id.ToString())); yield return(new Claim("LastName", user.LastName)); yield return(new Claim("FirstName", user.FirstName)); yield return(new Claim("Birthdate", user.Birthdate.ToString())); yield return(new Claim("Login", user.Login)); yield return(new Claim("Gender", user.Gender)); yield return(new Claim("StatusCode", user.StatusCode.ToString())); //yield return new Claim(ClaimTypes.Role, user.StatusName.ToString()); yield return(new Claim("lastResetPwd", user.lastResetPwd.ToString())); }
/*POSTMAN OK*/ public IActionResult Login([FromBody] FormLogin entity) { //string privateKey = _key.PrivateKey; //entity.Password = _decrypting.Decrypt(entity.Password, privateKey); UserSimplified user = new UserSimplified(); try { user = _authRepo.Login(entity.Login, entity.Password)?.DalToSimplifiedUserApi(); } catch (Exception e) { if (e.Message.Contains("LoginNotFound")) { return(Problem("Login doesnt exist", statusCode: (int)HttpStatusCode.NotFound)); } if (e.Message.Contains("PasswordDoesntMatch")) { return(Problem("Password doesnt match with the current login", statusCode: (int)HttpStatusCode.NotFound)); } else { return(Problem("?", statusCode: (int)HttpStatusCode.NotFound)); } } if (!(user is null)) { user.Token = _token.EncodeToken(user, (u) => u.ToCLaims()); if (string.IsNullOrWhiteSpace(user.Token)) { return(Problem("Invalid token !", statusCode: (int)HttpStatusCode.MethodNotAllowed)); } else { return(Ok(user)); } }
public UserSimplified DecodeToken(string token) { UserSimplified user = null; token = token.Replace("Bearer ", ""); JwtSecurityToken jwtSecurityToken = Handler.ReadJwtToken(token); if (jwtSecurityToken.ValidFrom <= DateTime.Now && jwtSecurityToken.ValidTo >= DateTime.Now) { JwtPayload payload = jwtSecurityToken.Payload; string test = Handler.WriteToken(new JwtSecurityToken(Header, payload)); if (token == test) { payload.TryGetValue("Id", out object id); payload.TryGetValue("LastName", out object lastName); payload.TryGetValue("FirstName", out object firstName); payload.TryGetValue("Birthdate", out object Birthdate); payload.TryGetValue("Login", out object login); payload.TryGetValue("Gender", out object gender); payload.TryGetValue("StatusCode", out object statusCode); user = new UserSimplified() { Id = int.Parse((string)id), LastName = (string)lastName, FirstName = (string)firstName, Birthdate = (DateTime)Birthdate, Login = (string)login, Gender = (string)gender, StatusCode = int.Parse((string)statusCode) }; } } return(user); }