summaryrefslogtreecommitdiff
path: root/Logics/BaseUserAccountLogic.cs
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2022-11-20 16:25:07 -0600
committerHombreLaser <sebastian-440@live.com>2022-11-20 16:25:07 -0600
commit0eb1eacf11f8c713478c08633f92d7579da91992 (patch)
tree5f3704778ac581493369b34ace33fcfb29caca4f /Logics/BaseUserAccountLogic.cs
parent61e9edfd4607b5eab5c291f49cdc3b2c7cb9d654 (diff)
Añadido controlador de administradores
Diffstat (limited to 'Logics/BaseUserAccountLogic.cs')
-rw-r--r--Logics/BaseUserAccountLogic.cs31
1 files changed, 31 insertions, 0 deletions
diff --git a/Logics/BaseUserAccountLogic.cs b/Logics/BaseUserAccountLogic.cs
new file mode 100644
index 0000000..1686bb6
--- /dev/null
+++ b/Logics/BaseUserAccountLogic.cs
@@ -0,0 +1,31 @@
+using Microsoft.AspNetCore.Identity;
+using BackendPIA.Services;
+using BackendPIA.Forms;
+using BackendPIA.Models;
+
+namespace BackendPIA.Logics {
+ public abstract class BaseUserAccountLogic {
+ protected readonly ITokenGenerator _token_generator;
+ protected readonly UserManager<UserAccount> _manager;
+ protected AuthenticationToken? _token;
+ public AuthenticationToken? Token { get { return _token; } }
+
+ public BaseUserAccountLogic(ITokenGenerator token_generator, UserManager<UserAccount> manager) {
+ _manager = manager;
+ _token_generator = token_generator;
+ }
+
+ protected async Task SetAuthenticationToken(UserAccount user) {
+ _token = new AuthenticationToken { Token = _token_generator.Generate(user, "administrator"),
+ RefreshToken = _token_generator.GenerateRefreshToken() };
+ await SetUserRefreshToken(user);
+ }
+
+ // We overwrite or set the value of the session token in the database: all other previous logins are invalid.
+ private async Task SetUserRefreshToken(UserAccount user) {
+ user.SessionToken = _token.RefreshToken;
+ user.SessionTokenExpiryTime = DateTime.UtcNow.AddHours(3);
+ await _manager.UpdateAsync(user);
+ }
+ }
+} \ No newline at end of file