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

2
.vscode/launch.json vendored
View File

@@ -53,7 +53,7 @@
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
"AYANOVA_SERVER_TEST_MODE": "false",
"AYANOVA_SERVER_TEST_MODE": "true",
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"

View File

@@ -123,7 +123,7 @@ namespace AyaNova.Api.ControllerHelpers
throw new System.NotSupportedException("ApiServerState:ApiErrorCode - No error code is associated with server state OPEN");
case ServerState.OpsOnly:
return ApiErrorCode.API_OPS_ONLY;
case ServerState.MigrateMode:
case ServerState.MigrateMode:
return ApiErrorCode.API_MIGRATE_MODE;
case ServerState.Closed:
return ApiErrorCode.API_CLOSED;
@@ -173,6 +173,14 @@ namespace AyaNova.Api.ControllerHelpers
}
}
public bool IsMigrateMode
{
get
{
return _currentState == ServerState.MigrateMode && !SYSTEM_LOCK;
}
}
public bool IsOpen
{
get
@@ -190,13 +198,13 @@ namespace AyaNova.Api.ControllerHelpers
}
}
public bool IsOpenOrOpsOnly
{
get
{
return (IsOpen || IsOpsOnly) && !SYSTEM_LOCK;
}
}
// public bool IsOpenOrOpsOnly
// {
// get
// {
// return (IsOpen || IsOpsOnly) && !SYSTEM_LOCK;
// }
// }
public bool IsSystemLocked
{

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

View File

@@ -1781,6 +1781,7 @@
"ServerStateOps": "Nur Systembetrieb",
"ServerStateMigrateMode": "Server-Migrationsmodus",
"ServerStateReason": "Grund",
"ServerStateLoginRestricted": "Anmeldung aufgrund der Serverstatuseinstellung eingeschränkt",
"TooManyResults": "Zu viele Ergebnisse, um alle anzuzeigen",
"NoResults": "Keine Ergebnisse",
"EventTextra": "Anmerkungen",

View File

@@ -1781,6 +1781,7 @@
"ServerStateOps": "Server operations only",
"ServerStateMigrateMode": "Server migration mode",
"ServerStateReason": "Reason",
"ServerStateLoginRestricted": "Login restricted due to server state setting",
"TooManyResults": "Too many results to show all",
"NoResults": "No results",
"EventTextra": "Notes",

View File

@@ -1781,6 +1781,7 @@
"ServerStateOps": "Solo operaciones del sistema",
"ServerStateMigrateMode": "Modo de migración del servidor",
"ServerStateReason": "Razón",
"ServerStateLoginRestricted": "Inicio de sesión restringido debido a la configuración del estado del servidor",
"TooManyResults": "Demasiados resultados para mostrar todos",
"NoResults": "No hay resultados",
"EventTextra": "Notas",

View File

@@ -1781,6 +1781,7 @@
"ServerStateOps": "Opérations système uniquement",
"ServerStateMigrateMode": "Mode de migration du serveur",
"ServerStateReason": "Objectif",
"ServerStateLoginRestricted": "Connexion restreinte en raison du paramètre d'état du serveur",
"TooManyResults": "Trop de résultats pour tout montrer",
"NoResults": "Aucun résultat",
"EventTextra": "Remarques",

View File

@@ -401,11 +401,16 @@ namespace AyaNova.Util
cmd.CommandText = "ALTER SEQUENCE auser_id_seq RESTART WITH 2;";
await cmd.ExecuteNonQueryAsync();
cmd.CommandText = "delete from \"adashboardview\" where userid <> 1;";
await cmd.ExecuteNonQueryAsync();
cmd.CommandText = $"ALTER SEQUENCE adashboardview_id_seq RESTART WITH 2;";
await cmd.ExecuteNonQueryAsync();
cmd.CommandText = "delete from \"apartwarehouse\" where id <> 1;";
await cmd.ExecuteNonQueryAsync();
cmd.CommandText = $"ALTER SEQUENCE apartwarehouse_id_seq RESTART WITH 2;";
await cmd.ExecuteNonQueryAsync();
}
await conn.CloseAsync();