diff options
author | HombreLaser <sebastian-440@live.com> | 2022-11-27 12:46:26 -0600 |
---|---|---|
committer | HombreLaser <sebastian-440@live.com> | 2022-11-27 12:46:26 -0600 |
commit | 3da900a30e788d0acf2fcee7dba2aecdb16aab43 (patch) | |
tree | ec8312f37d26f81b22fb498728572f08983d67e5 /Logics | |
parent | 45eb6bcac6eaa57efba955dd45aad46f988aaf35 (diff) |
Añadido logout
Diffstat (limited to 'Logics')
-rw-r--r-- | Logics/BaseUserAccountLogic.cs | 2 | ||||
-rw-r--r-- | Logics/DestroyUserAccountSessionLogic.cs | 30 | ||||
-rw-r--r-- | Logics/RefreshTokenLogic.cs | 1 |
3 files changed, 33 insertions, 0 deletions
diff --git a/Logics/BaseUserAccountLogic.cs b/Logics/BaseUserAccountLogic.cs index 4ce17e0..43a8ed9 100644 --- a/Logics/BaseUserAccountLogic.cs +++ b/Logics/BaseUserAccountLogic.cs @@ -19,6 +19,8 @@ namespace BackendPIA.Logics { var roles = await _manager.GetRolesAsync(user); _token = new AuthenticationToken { Token = _token_generator.Generate(user, roles[0]), RefreshToken = _token_generator.GenerateRefreshToken() }; + user.CurrentToken = _token.Token; + await _manager.UpdateAsync(user); } // We overwrite or set the value of the session token in the database: all other previous logins are invalid. diff --git a/Logics/DestroyUserAccountSessionLogic.cs b/Logics/DestroyUserAccountSessionLogic.cs new file mode 100644 index 0000000..1e5a5f5 --- /dev/null +++ b/Logics/DestroyUserAccountSessionLogic.cs @@ -0,0 +1,30 @@ +using Microsoft.AspNetCore.Identity; +using BackendPIA.Services; +using BackendPIA.Models; +using BackendPIA.Forms; + +namespace BackendPIA.Logics { + public class DestroyUserAccountSessionLogic { + private readonly UserManager<UserAccount> _manager; + private readonly string _email; + + public DestroyUserAccountSessionLogic(UserManager<UserAccount> manager, string email) { + _manager = manager; + _email = email; + } + + public async Task<bool> Call() { + var user = await _manager.FindByEmailAsync(_email); + + if(user == null) + return false; + + user.SessionToken = null; + user.CurrentToken = null; + user.SessionTokenExpiryTime = null; + await _manager.UpdateAsync(user); + + return true; + } + } +}
\ No newline at end of file diff --git a/Logics/RefreshTokenLogic.cs b/Logics/RefreshTokenLogic.cs index 200438a..3493f47 100644 --- a/Logics/RefreshTokenLogic.cs +++ b/Logics/RefreshTokenLogic.cs @@ -26,6 +26,7 @@ namespace BackendPIA.Logics { || user.SessionToken == null || user.SessionToken != _form.RefreshToken) { user.SessionToken = null; user.SessionTokenExpiryTime = null; + user.CurrentToken = null; _manager.UpdateAsync(user); return false; |