Add profile avatar settings

This commit is contained in:
Johannes Zellner
2025-01-14 14:52:10 +01:00
parent 63b5e28537
commit 99b2140838
3 changed files with 79 additions and 4 deletions
+37
View File
@@ -5,6 +5,14 @@ import { fetcher } from 'pankow';
function create(origin, accessToken) {
return {
name: 'ProfileModel',
async logout() {
// destroy oidc session in the spirit of true SSO
await fetcher.del(`${origin}/api/v1/oidc/sessions`, { access_token: accessToken });
localStorage.removeItem('token');
window.location.href = '/';
},
async get() {
let error, result;
try {
@@ -22,6 +30,19 @@ function create(origin, accessToken) {
return result.body;
},
async setPassword(password, newPassword) {
let error, result;
try {
result = await fetcher.post(`${origin}/api/v1/profile/password`, { password, newPassword }, { access_token: accessToken });
} catch (e) {
error = e;
}
if (error) return error;
if (result.status !== 204) return result;
return null;
},
async setDisplayName(displayName) {
let error, result;
try {
@@ -74,6 +95,22 @@ function create(origin, accessToken) {
return null;
},
async setAvatar(file) {
const fd = new FormData();
fd.append('avatar', file);
let error, result;
try {
result = await fetcher.post(`${origin}/api/v1/profile/avatar`, fd, { access_token: accessToken });
} catch (e) {
error = e;
}
if (error) return error;
if (result.status !== 202) return result;
return null;
},
async sendPasswordReset(identifier) {
let error, result;
try {