This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -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\\"
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -340,7 +340,7 @@ namespace AyaNova.Util
|
||||
await EraseTableAsync("apmtemplateitem", conn);
|
||||
await EraseTableAsync("apmtemplate", conn);
|
||||
|
||||
|
||||
|
||||
await EraseTableAsync("aquoteitem", conn);
|
||||
await EraseTableAsync("aquote", conn);
|
||||
await EraseTableAsync("aquotetemplateitem", conn);
|
||||
@@ -400,12 +400,17 @@ 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();
|
||||
|
||||
Reference in New Issue
Block a user