mirror of
https://git.recroomarchive.org/RecRoomArchive/RRAC.git
synced 2026-09-08 14:41:25 -07:00
44 lines
1.7 KiB
C#
44 lines
1.7 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using RecRoomArchive.Models.API.PlatformLogin.Requests;
|
|
using RecRoomArchive.Models.API.PlatformLogin.Responses;
|
|
using RecRoomArchive.Services;
|
|
|
|
namespace RecRoomArchive.Controllers.API.PlatformLogin.V5
|
|
{
|
|
/// <summary>
|
|
/// Used to login to accounts on Rec Room
|
|
/// </summary>
|
|
[Route(template: "api/[controller]/v5")]
|
|
[ApiController]
|
|
public class PlatformLoginController(AppVersionService appVersionService, AccountService accountService, AuthorizationService authorizationService) : ControllerBase
|
|
{
|
|
/// <summary>
|
|
/// Checks if the appVersion provided is allowed to play (which it most certainly will be unless its a weird build or someone messed with it)
|
|
/// </summary>
|
|
/// <returns>An Ok response if the version is valid, Forbid if it is not. Forbid will yield the client displaying "Rec Room Update Required" soo maybe don't</returns>
|
|
[HttpPost]
|
|
public async Task<ActionResult> Login([FromForm] BaseLoginRequest loginRequest)
|
|
{
|
|
var username = loginRequest.Name ?? string.Empty;
|
|
|
|
var buildTimestamp = loginRequest.BuildTimestamp;
|
|
|
|
await appVersionService.StoreBuildTimestamp(buildTimestamp);
|
|
|
|
// See if a profile exists yet...
|
|
if (!accountService.AccountExists())
|
|
{
|
|
// ...if not, create it!
|
|
accountService.CreateAccount(username);
|
|
}
|
|
|
|
var accountId = accountService.GetSelfAccountId()!.Value;
|
|
|
|
return Ok(new BaseLoginResponse
|
|
{
|
|
Token = authorizationService.GenerateToken(accountId),
|
|
PlayerId = accountId
|
|
});
|
|
}
|
|
}
|
|
} |