diff --git a/packages/api/src/controllers/auth.js b/packages/api/src/controllers/auth.js index a5732b29a..bb0d60680 100644 --- a/packages/api/src/controllers/auth.js +++ b/packages/api/src/controllers/auth.js @@ -58,7 +58,17 @@ module.exports = { }, login_meta: true, async login(params) { - const { login, password } = params; + const { login, password, isAdminPage } = params; + + if (isAdminPage) { + if (process.env.ADMIN_PASSWORD && process.env.ADMIN_PASSWORD == password) { + return { + accessToken: jwt.sign({ login: 'admin' }, getTokenSecret(), { expiresIn: getTokenLifetime() }), + }; + } + + return { error: 'Login failed' }; + } return getAuthProvider().login(login, password); }, diff --git a/packages/web/src/LoginPage.svelte b/packages/web/src/LoginPage.svelte index b77fa2db9..841957d81 100644 --- a/packages/web/src/LoginPage.svelte +++ b/packages/web/src/LoginPage.svelte @@ -35,7 +35,10 @@ value={isAdminPage ? 'Log In as Administrator' : 'Log In'} on:click={async e => { enableApi(); - const resp = await apiCall('auth/login', e.detail); + const resp = await apiCall('auth/login', { + isAdminPage, + ...e.detail, + }); if (resp.error) { internalRedirectTo(`/?page=not-logged&error=${encodeURIComponent(resp.error)}`); return;