mirror of
https://github.com/hmaxnl/SharpRSS.git
synced 2024-09-20 01:54:20 +02:00
34 lines
1.2 KiB
C#
34 lines
1.2 KiB
C#
|
using System;
|
||
|
using System.Security.Cryptography;
|
||
|
using System.Text;
|
||
|
using Serilog;
|
||
|
using SharpRSS.API.Contracts.DTO;
|
||
|
|
||
|
namespace SharpRSS.API.Models
|
||
|
{
|
||
|
internal class DbSession : Session
|
||
|
{
|
||
|
public DbSession() { }
|
||
|
private DbSession(string uid, double expiresMinutes)
|
||
|
{
|
||
|
if (string.IsNullOrEmpty(uid) || string.IsNullOrWhiteSpace(uid))
|
||
|
{
|
||
|
Log.Error("User id is null or empty cannot create session!");
|
||
|
throw new Exception("User id cannot be null!");
|
||
|
}
|
||
|
Uid = uid;
|
||
|
Created = DateTime.Now;
|
||
|
Expires = Created.AddMinutes(expiresMinutes);
|
||
|
using SHA1 sha1 = SHA1.Create();
|
||
|
string uidHash = Convert.ToHexString(sha1.ComputeHash(Encoding.UTF8.GetBytes(Uid)));
|
||
|
Sid = $"{new DateTimeOffset(Created).ToUnixTimeMilliseconds()}.{uidHash}.{new DateTimeOffset(Expires).ToUnixTimeMilliseconds()}";
|
||
|
}
|
||
|
public string Uid { get; set; }
|
||
|
|
||
|
public static DbSession CreateSession(string uid, double expiresMinutes = 10080)
|
||
|
{
|
||
|
DbSession newSession = new DbSession(uid, expiresMinutes);
|
||
|
return newSession;
|
||
|
}
|
||
|
}
|
||
|
}
|