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;
|
|
}
|
|
}
|
|
} |