Login indication #127

Merged
tonitch merged 5 commits from tonitch/front/loginIndication into master 2024-03-16 14:45:03 +01:00
5 changed files with 31 additions and 8 deletions

View File

@ -9,6 +9,7 @@ import ovh.herisson.Clyde.Tables.User;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Base64;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
@ -30,13 +31,10 @@ public class TokenService {
new SecureRandom().nextBytes(bytes); new SecureRandom().nextBytes(bytes);
for (int i = 0; i < bytes.length; i++) { for (int i = 0; i < bytes.length; i++) {
bytes[i] = (byte) (((bytes[i]+256)%256 %95+ 32)); bytes[i] = (byte) (((bytes[i]+256)%256 %95+ 32));
while ((char)bytes[i] == ';'){
bytes[i] = new SecureRandom().generateSeed(1)[0];
}
} }
// will never end up in the catch because of the way that SecureRandom.nextBytes is implemented // will never end up in the catch because of the way that SecureRandom.nextBytes is implemented
try { try {
return new String(bytes,"ISO_8859_1"); return new String(Base64.getEncoder().encode(bytes),"ISO_8859_1");
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View File

@ -2,6 +2,7 @@
import { toast } from 'vue3-toastify'; import { toast } from 'vue3-toastify';
import { ref, computed } from 'vue' import { ref, computed } from 'vue'
import i18n, { setLang } from './i18n.js' import i18n, { setLang } from './i18n.js'
import { isLogged } from '@/rest/Users.js'
// Liste des apps // Liste des apps
@ -19,6 +20,7 @@
const currentPath = ref(window.location.hash) const currentPath = ref(window.location.hash)
window.addEventListener('hashchange', () => { window.addEventListener('hashchange', () => {
Logged.value = isLogged();
currentPath.value = window.location.hash currentPath.value = window.location.hash
}) })
@ -32,6 +34,8 @@
const login=ref(i18n("app.login")) const login=ref(i18n("app.login"))
const active=ref(false) const active=ref(false)
const Logged = ref(isLogged());
</script> </script>
<template> <template>
@ -49,7 +53,7 @@
</a></li> </a></li>
<li style="float: right;" title=login> <li style="float: right;" title=login>
<a class="icon" href="#/login"> <a class="icon" href="#/login">
<div class="fa-solid fa-user" style="margin-top: 7px; margin-bottom: 3px;"></div> <div class="fa-solid fa-user" :style="Logged ? 'color: orange' : 'haha'" style="margin-top: 7px; margin-bottom: 3px; "></div>
</a></li> </a></li>
<li style="float: right;" title=notifications> <li style="float: right;" title=notifications>
<a class="icon" href="#Notifications"> <a class="icon" href="#Notifications">

View File

@ -1,7 +1,7 @@
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
import i18n from '@/i18n.js' import i18n from '@/i18n.js'
import { login , register } from '@/rest/Users.js' import { login , register, disconnect } from '@/rest/Users.js'
import { uploadProfilePicture } from '@/rest/uploads.js' import { uploadProfilePicture } from '@/rest/uploads.js'
const loginPage= ref(true) const loginPage= ref(true)
@ -20,6 +20,9 @@
const imageSaved = ref(false) const imageSaved = ref(false)
const ppData = ref(false) const ppData = ref(false)
disconnect()
</script> </script>

View File

@ -1,9 +1,18 @@
import { restGet, restPost } from './restConsumer.js' import { restGet, restPost } from './restConsumer.js'
import { getCookie, setCookie } from '@/utils.js'
export async function login(user, pass, exp){ export async function login(user, pass, exp){
return restPost("/login", {identifier: user, password: pass, expirationDate: exp}); return restPost("/login", {identifier: user, password: pass, expirationDate: exp});
} }
export function isLogged(){
return getCookie("session_token") != ""
}
export function disconnect(){
setCookie("session_token", ";expires= Thu, 01 Jan 1970 00:00:01 GMT")
}
/** /**
* Register a user (tokenless) * Register a user (tokenless)
* *

View File

@ -0,0 +1,9 @@
import { restGet } from './restConsumer.js'
export async function appList(){
return restGet("/apps")
}
export async function checkPage(page){
return restGet("/apps/" + page)
}