-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSession.cs
More file actions
127 lines (84 loc) · 2.94 KB
/
Session.cs
File metadata and controls
127 lines (84 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
global using Global.Http.Services;
global using LIN.Types.Developer.Enumerations;
global using LIN.Types.Developer.Models;
global using LIN.Types.Responses;
global using System.Threading.Tasks;
namespace LIN.Access.Developer;
public sealed class Session
{
/// <summary>
/// Token de acceso.
/// </summary>
public string Token { get; set; }
/// <summary>
/// Información del usuario
/// </summary>
public ProfileDataModel? Information { get; private set; } = new();
/// <summary>
/// Información del usuario
/// </summary>
public Types.Cloud.Identity.Models.Identities.AccountModel Account { get; private set; } = new();
/// <summary>
/// Token de identidad.
/// </summary>
public string AccountToken { get; set; }
/// <summary>
/// Si la sesión es activa
/// </summary>
public static bool IsAccountOpen => Instance.Account.Id > 0;
/// <summary>
/// Si la sesión es activa
/// </summary>
public static bool IsDevOpen => Instance.Information?.Id > 0;
/// <summary>
/// Recarga o inicia una sesión
/// </summary>
public static async Task<(Session? Sesion, Responses Response)> LoginWith(string user, string password)
{
// Cierra la sesión Actual
CloseSession();
// Validación de user
var response = await Controllers.Authentication.Login(user, password);
if (response.Response != Responses.Success)
return (null, response.Response);
// Datos de la instancia.
Instance.Information = response.Model.Profile;
Instance.Account = response.Model.Account;
Instance.Token = response.Token;
Instance.AccountToken = response.Model.TokenCollection["identity"];
return (Instance, Responses.Success);
}
/// <summary>
/// Recarga o inicia una sesión
/// </summary>
public static async Task<(Session? Sesion, Responses Response)> LoginWith(string token)
{
// Cierra la sesión Actual
CloseSession();
// Validación de user
var response = await Controllers.Authentication.Login(token);
if (response.Response != Responses.Success)
return (null, response.Response);
// Datos de la instancia
Instance.Information = response.Model.Profile;
Instance.Account = response.Model.Account;
Instance.Token = response.Token;
Instance.AccountToken = response.Model.TokenCollection["identity"];
return (Instance, Responses.Success);
}
/// <summary>
/// Cierra la sesión
/// </summary>
public static void CloseSession()
{
Instance.Information = new();
Instance.Account = new();
}
//==================== Singleton ====================//
private static readonly Session _instance = new();
private Session()
{
Information = new();
}
public static Session Instance => _instance;
}