This commit is contained in:
2021-03-03 00:50:15 +00:00
parent 1b07953f59
commit eec26f92de
9 changed files with 53 additions and 15 deletions

View File

@@ -168,10 +168,10 @@ namespace AyaNova.Api.Controllers
{
//Valid password, user is effectively authorized at this point
//check if server closed
//if it is it means we got here only because there is no license
//and only *the* SuperUser account can login now
if (serverState.IsClosed)
//check if server available to SuperUser account only (closed or migrate mode)
//if it is it means we got here either because there is no license
//and only *the* SuperUser account can login now or we're in migrate mode
if (serverState.IsClosed || serverState.IsMigrateMode)
{
//if not SuperUser account then boot closed
//SuperUser account is always ID 1

View File

@@ -43,7 +43,7 @@ namespace AyaNova.Api.Controllers
/// <summary>
/// Get server state
/// </summary>
/// <returns>Current server state (Closed, OpsOnly, Open)</returns>
/// <returns>Current server state (Closed, MigrateMode, OpsOnly, Open)</returns>
[HttpGet]
public ActionResult Get()
{
@@ -79,8 +79,29 @@ namespace AyaNova.Api.Controllers
if (desiredState == ApiServerState.ServerState.Closed)
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_INVALID_VALUE, null, "Invalid state - must be one of \"OpsOnly\", \"MigrateMode\" or \"Open\""));
var TransId = UserTranslationIdFromContext.Id(HttpContext.Items);
log.LogInformation($"ServerState change request by user {UserNameFromContext.Name(HttpContext.Items)} from current state of \"{serverState.GetState().ToString()}\" to \"{desiredState.ToString()}-{state.Reason}\"");
//Add a message if user didn't enter one so other users know why they can't login
if (string.IsNullOrWhiteSpace(state.Reason))
{
switch (desiredState)
{
case ApiServerState.ServerState.Open:
break;
case ApiServerState.ServerState.MigrateMode:
state.Reason += await TranslationBiz.GetTranslationStaticAsync("ServerStateLoginRestricted", TransId, ct) + " " + await TranslationBiz.GetTranslationStaticAsync("ServerStateMigrateMode", TransId, ct);
break;
case ApiServerState.ServerState.OpsOnly:
state.Reason += await TranslationBiz.GetTranslationStaticAsync("ServerStateLoginRestricted", TransId, ct) + " " + await TranslationBiz.GetTranslationStaticAsync("ServerStateOps", TransId, ct);
break;
case ApiServerState.ServerState.Closed:
state.Reason += await TranslationBiz.GetTranslationStaticAsync("ServerStateLoginRestricted", TransId, ct) + " " + await TranslationBiz.GetTranslationStaticAsync("ErrorAPI2000", TransId, ct);
break;
}
}
serverState.SetState(desiredState, state.Reason);
//Log