✨ Manual setup account connections
🐛 Fix infinite oauth token reconnect websocket due to missing device id 🐛 Fix IP forwarded headers didn't work
This commit is contained in:
		| @@ -5,8 +5,10 @@ using NodaTime; | ||||
|  | ||||
| namespace DysonNetwork.Sphere.Auth; | ||||
|  | ||||
| public class AuthService(AppDatabase db, IConfiguration config, IHttpClientFactory httpClientFactory) | ||||
| public class AuthService(AppDatabase db, IConfiguration config, IHttpClientFactory httpClientFactory, IHttpContextAccessor httpContextAccessor) | ||||
| { | ||||
|     private HttpContext HttpContext => httpContextAccessor.HttpContext!; | ||||
|  | ||||
|     /// <summary> | ||||
|     /// Detect the risk of the current request to login | ||||
|     /// and returns the required steps to login. | ||||
| @@ -63,6 +65,33 @@ public class AuthService(AppDatabase db, IConfiguration config, IHttpClientFacto | ||||
|         return totalRequiredSteps; | ||||
|     } | ||||
|  | ||||
|     public async Task<Session> CreateSessionAsync(Account.Account account, Instant time) | ||||
|     { | ||||
|         var challenge = new Challenge | ||||
|         { | ||||
|             AccountId = account.Id, | ||||
|             IpAddress = HttpContext.Connection.RemoteIpAddress?.ToString(), | ||||
|             UserAgent = HttpContext.Request.Headers.UserAgent, | ||||
|             StepRemain = 1, | ||||
|             StepTotal = 1, | ||||
|             Type = ChallengeType.Oidc | ||||
|         }; | ||||
|  | ||||
|         var session = new Session | ||||
|         { | ||||
|             AccountId = account.Id, | ||||
|             CreatedAt = time, | ||||
|             LastGrantedAt = time, | ||||
|             Challenge = challenge | ||||
|         }; | ||||
|  | ||||
|         db.AuthChallenges.Add(challenge); | ||||
|         db.AuthSessions.Add(session); | ||||
|         await db.SaveChangesAsync(); | ||||
|  | ||||
|         return session; | ||||
|     } | ||||
|  | ||||
|     public async Task<bool> ValidateCaptcha(string token) | ||||
|     { | ||||
|         if (string.IsNullOrWhiteSpace(token)) return false; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user