diff --git a/packages/api/env/auth/.env b/packages/api/env/auth/.env
index 9d4d60626..2f525b9bc 100644
--- a/packages/api/env/auth/.env
+++ b/packages/api/env/auth/.env
@@ -2,4 +2,6 @@ DEVMODE=1
OAUTH_AUTH=http://auth.metrostav.vychozi.cz/auth/realms/metrostav/protocol/openid-connect/auth
OAUTH_TOKEN=http://auth.metrostav.vychozi.cz/auth/realms/metrostav/protocol/openid-connect/token
OAUTH_CLIENT_ID=dbgate
-OAUTH_CLIENT_SECRET=ffd5634b-b60a-4c3a-bbec-b4144c73ea2a
\ No newline at end of file
+OAUTH_CLIENT_SECRET=ffd5634b-b60a-4c3a-bbec-b4144c73ea2a
+OAUTH_LOGIN_FIELD=given_name
+OAUTH_ALLOWED_LOGINS=Student1
\ No newline at end of file
diff --git a/packages/api/src/controllers/auth.js b/packages/api/src/controllers/auth.js
index 8d91da83e..e6d36bb72 100644
--- a/packages/api/src/controllers/auth.js
+++ b/packages/api/src/controllers/auth.js
@@ -58,6 +58,10 @@ module.exports = {
const payload = jwt.decode(access_token);
+ const login = process.env.OAUTH_LOGIN_FIELD ? payload[process.env.OAUTH_LOGIN_FIELD] : 'oauth';
+
+ console.log(payload);
+
if (access_token) {
return {
accessToken: jwt.sign({ user: 'oauth' }, tokenSecret, { expiresIn: '1m' }),
diff --git a/packages/web/src/LoginPage.svelte b/packages/web/src/LoginPage.svelte
new file mode 100644
index 000000000..705d8321b
--- /dev/null
+++ b/packages/web/src/LoginPage.svelte
@@ -0,0 +1,97 @@
+
+
+
+
DbGate
+
+
+

+
+
+
Log In
+
+
+
+
+
+ {
+ console.log('log in', e);
+ }}
+ />
+
+
+
+
+
+
+
diff --git a/packages/web/src/NotLoggedPage.svelte b/packages/web/src/NotLoggedPage.svelte
new file mode 100644
index 000000000..6c314b50f
--- /dev/null
+++ b/packages/web/src/NotLoggedPage.svelte
@@ -0,0 +1,18 @@
+
+
+Sorry, you are not authorized to run DbGate
+
+
diff --git a/packages/web/src/clientAuth.ts b/packages/web/src/clientAuth.ts
index 71c1b9220..5b9a304a9 100644
--- a/packages/web/src/clientAuth.ts
+++ b/packages/web/src/clientAuth.ts
@@ -19,7 +19,7 @@ export function handleOauthCallback() {
sessionStorage.removeItem('oauthState');
apiCall('auth/oauth-token', {
code: sentCode,
- redirectUri: location.origin,
+ redirectUri: location.origin + location.pathname,
}).then(authResp => {
const { accessToken } = authResp;
localStorage.setItem('accessToken', accessToken);
@@ -50,7 +50,7 @@ export async function redirectToLogin(config = null) {
console.log('Redirecting to OAUTH provider');
location.replace(
`${config.oauth}?client_id=dbgate&response_type=code&redirect_uri=${encodeURIComponent(
- location.origin
+ location.origin + location.pathname
)}&state=${encodeURIComponent(state)}`
);
}
diff --git a/packages/web/src/main.ts b/packages/web/src/main.ts
index 337d547c1..2bfcb4749 100644
--- a/packages/web/src/main.ts
+++ b/packages/web/src/main.ts
@@ -4,18 +4,40 @@ import './utility/changeCurrentDbByTab';
import './commands/stdCommands';
import localStorageGarbageCollector from './utility/localStorageGarbageCollector';
import { handleOauthCallback } from './clientAuth';
+import LoginPage from './LoginPage.svelte';
+import NotLoggedPage from './NotLoggedPage.svelte';
const isOauthCallback = handleOauthCallback();
+const params = new URLSearchParams(location.search);
+const page = params.get('page');
+
localStorageGarbageCollector();
-const app = isOauthCallback
- ? null
- : new App({
- target: document.body,
- props: {},
- });
+function createApp() {
+ if (isOauthCallback) {
+ return null;
+ }
-// const app = null;
+ switch (page) {
+ case 'login':
+ return new LoginPage({
+ target: document.body,
+ props: {},
+ });
+ case 'not-logged':
+ return new NotLoggedPage({
+ target: document.body,
+ props: {},
+ });
+ }
+
+ return new App({
+ target: document.body,
+ props: {},
+ });
+}
+
+const app = createApp();
export default app;