summaryrefslogtreecommitdiff
path: root/Logics
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2022-11-27 12:46:26 -0600
committerHombreLaser <sebastian-440@live.com>2022-11-27 12:46:26 -0600
commit3da900a30e788d0acf2fcee7dba2aecdb16aab43 (patch)
treeec8312f37d26f81b22fb498728572f08983d67e5 /Logics
parent45eb6bcac6eaa57efba955dd45aad46f988aaf35 (diff)
Añadido logout
Diffstat (limited to 'Logics')
-rw-r--r--Logics/BaseUserAccountLogic.cs2
-rw-r--r--Logics/DestroyUserAccountSessionLogic.cs30
-rw-r--r--Logics/RefreshTokenLogic.cs1
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;