public async Task <Models.Token> GetRefreshToken(Models.AccessCred cred) { // Ricavo il refresh token Models.RefreshToken refT = await GetRefToken(cred.Refresh_token); // Controllo refresh token if (refT != null) { // Controllo se il refresh token è scaduto if (DateTime.Compare(refT.DateExpires, DateTime.Now) > 0) { // Ricavo i dati utente Models.User user = GetUser(refT.UserId); return(await CreateToken(user.UserId, user.RoleId, cred.Refresh_token)); } else { // Elimino il refresh token scaduto await DeleteRefreshToken(cred.Refresh_token); } } return(null); }
public async Task <IActionResult> Logout(Models.AccessCred cred) { int idUser = Convert.ToInt32(HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); await repo.SignOut(cred.Refresh_token, idUser); return(Ok()); }
public async Task <Models.Token> GetToken(Models.AccessCred _auth) { Models.User user = await ValidateUser(_auth.Username, _auth.Password); // Controllo login if (user != null) { await UpdateDateLogin(user.UserId); return(await CreateToken(user.UserId, user.RoleId, "")); } return(null); }
public async Task <IActionResult> Refresh([FromBody] Models.AccessCred cred) { Models.Token token = null; if (cred.Grant_type == "refresh_token") { token = await repo.GetRefreshToken(cred); } if (token == null) { return(BadRequest(new { message = "Refresh token non valido." })); } else { return(Ok(token)); } }
public async Task <IActionResult> Login([FromBody] Models.AccessCred cred) { Models.Token token = null; if (cred.Grant_type == "password") { token = await repo.GetToken(cred); } if (token == null) { return(BadRequest(new { message = "Utente o password non corretti." })); } else { return(Ok(token)); } }