added login function
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { useKeycloakStore } from '../stores/keycloakStore';
|
//import { useKeycloakStore } from '../stores/keycloakStore';
|
||||||
import {defineComponent, onMounted, ref} from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import {useUserStore} from 'stores/user-store';
|
import { useUserStore } from 'stores/user-store';
|
||||||
|
import { useKeycloakStore } from 'stores/keycloakStore';
|
||||||
|
|
||||||
/*const protectedData = ref("");
|
/*const protectedData = ref("");
|
||||||
const keycloakStore = useKeycloakStore();
|
const keycloakStore = useKeycloakStore();
|
||||||
@@ -34,12 +35,16 @@ onMounted(() => {
|
|||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'ProtectedData',
|
name: 'ProtectedData',
|
||||||
components: {},
|
components: {},
|
||||||
|
methods: {
|
||||||
|
logout() {
|
||||||
|
const keycloakStore = useKeycloakStore();
|
||||||
|
keycloakStore.logout();
|
||||||
|
}
|
||||||
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const userStore = useUserStore();
|
return useUserStore();
|
||||||
|
},
|
||||||
|
|
||||||
return userStore;
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@@ -52,6 +57,7 @@ export default defineComponent({
|
|||||||
<p>{{ user.username }}</p>
|
<p>{{ user.username }}</p>
|
||||||
<p>{{ user.keycloakID }}</p>
|
<p>{{ user.keycloakID }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
<q-btn @click="logout()" label="Logout" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
38
src/main.ts
38
src/main.ts
@@ -3,7 +3,7 @@ import {createPinia} from 'pinia';
|
|||||||
|
|
||||||
import App from './App.vue';
|
import App from './App.vue';
|
||||||
|
|
||||||
import Keycloak, {type KeycloakConfig, type KeycloakInitOptions} from 'keycloak-js';
|
import Keycloak from 'keycloak-js';
|
||||||
import { useKeycloakStore } from 'stores/keycloakStore';
|
import { useKeycloakStore } from 'stores/keycloakStore';
|
||||||
import {useUserStore} from 'stores/user-store';
|
import {useUserStore} from 'stores/user-store';
|
||||||
|
|
||||||
@@ -18,23 +18,34 @@ app.use(createPinia());
|
|||||||
* @param onLoad = 'login-required': Hierdurch wird zum Aufrufen der ganzen Applikation ein login benötigt.
|
* @param onLoad = 'login-required': Hierdurch wird zum Aufrufen der ganzen Applikation ein login benötigt.
|
||||||
* @param redirectUri: URL, zu der nach dem Login weitergeleitet wird. Hierbei wird die Port des Frontends aus der .env-Datei verwendet.
|
* @param redirectUri: URL, zu der nach dem Login weitergeleitet wird. Hierbei wird die Port des Frontends aus der .env-Datei verwendet.
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* Variablen sind in quasar.config.js definiert und werden hier verwendet.
|
||||||
|
* @param keycloakPort Port, auf dem Keycloak läuft, hinterlegt in docker-compose.yml
|
||||||
|
* @param frontendPort Port, auf dem das Frontend läuft, hinterlegt in quasar.config.js und realm-export.json von Keycloak für die Redirect-URL
|
||||||
|
* @param realm Name des Realms, hinterlegt in realm-export.json von Keycloak
|
||||||
|
* @param clientId Name des Clients, hinterlegt in realm-export.json von Keycloak
|
||||||
|
*/
|
||||||
|
const keycloakPort = "" + process.env.PORT_KEYCLOAK;
|
||||||
|
const frontendPort = "" + process.env.PORT_FRONTEND;
|
||||||
|
const realm = "" + process.env.KEYCLOAK_REALM;
|
||||||
|
const clientId = "" + process.env.KEYCLOAK_CLIENT_ID;
|
||||||
|
|
||||||
|
const userStore = useUserStore();
|
||||||
|
const keycloakStore = useKeycloakStore();
|
||||||
|
|
||||||
const keycloak = new Keycloak({
|
const keycloak = new Keycloak({
|
||||||
url: 'http://localhost:8083/',
|
url: 'http://localhost:' + keycloakPort + '/',
|
||||||
realm: 'PraxistransferKeycloak',
|
realm: realm,
|
||||||
clientId: 'praxistransfer'
|
clientId: clientId
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("ICH WAR HIER");
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const authenticated = await keycloak.init({
|
await keycloak.init({
|
||||||
onLoad: 'login-required',
|
onLoad: 'login-required', //authentifizierung erforderlich
|
||||||
redirectUri: 'http://localhost:8080/test/'
|
redirectUri: 'http://localhost:' + frontendPort + '/test/'
|
||||||
}).then( (auth) => {
|
}).then( (auth) => {
|
||||||
console.log("Authenticated :" + authenticated);
|
console.log("Authenticated: " + auth);
|
||||||
});
|
});
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}
|
}
|
||||||
@@ -43,7 +54,6 @@ console.log(keycloak);
|
|||||||
console.log(keycloak.subject);
|
console.log(keycloak.subject);
|
||||||
|
|
||||||
// Anfrage ans Backend
|
// Anfrage ans Backend
|
||||||
const userStore = useUserStore();
|
|
||||||
|
|
||||||
if (keycloak.subject != null) {
|
if (keycloak.subject != null) {
|
||||||
//userStore.loadPtpUsersByKeycloakID(keycloak.subject);
|
//userStore.loadPtpUsersByKeycloakID(keycloak.subject);
|
||||||
@@ -56,7 +66,7 @@ if (keycloak.subject != null) {
|
|||||||
console.log(JSON.stringify(user));
|
console.log(JSON.stringify(user));
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
console.log("hier ist was schlimmes passiert menno");
|
console.error("hier ist was schlimmes passiert menno");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
keycloakStore.setKeycloak(keycloak);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { Todo, Meta } from '../components/models';
|
import { Todo, Meta } from 'components/models';
|
||||||
import ExampleComponent from 'components/ExampleComponent.vue';
|
import ExampleComponent from 'components/ExampleComponent.vue';
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ export const useKeycloakStore = defineStore('keycloakStore', {
|
|||||||
setKeycloak(keycloak: Keycloak): void {
|
setKeycloak(keycloak: Keycloak): void {
|
||||||
this.keycloak = keycloak;
|
this.keycloak = keycloak;
|
||||||
},
|
},
|
||||||
|
async logout(){
|
||||||
|
await this.keycloak?.logout();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user