Improve login UI with error handling and callback page

This commit is contained in:
Viktor Barzin 2026-02-02 20:08:03 +00:00
parent ceb943f198
commit 29ba739063
No known key found for this signature in database
GPG key ID: 4056458DBDBF8863
5 changed files with 324 additions and 44 deletions

View file

@ -1,11 +1,36 @@
import { User, UserManager } from 'oidc-client-ts';
import { oidcConfig } from './config';
import { parseOidcError, type AuthError } from './errors';
const userManager = new UserManager(oidcConfig);
export const login = () => userManager.signinRedirect();
export const logout = () => userManager.signoutRedirect();
export const handleCallback = () => userManager.signinRedirectCallback();
export const login = async (): Promise<void> => {
try {
await userManager.signinRedirect();
} catch (error) {
console.error('Login redirect failed:', error);
throw parseOidcError(error);
}
};
export const logout = async (): Promise<void> => {
try {
await userManager.signoutRedirect();
} catch (error) {
console.error('Logout redirect failed:', error);
throw parseOidcError(error);
}
};
export const handleCallback = async (): Promise<User> => {
try {
const user = await userManager.signinRedirectCallback();
return user;
} catch (error) {
console.error('Callback handling failed:', error);
throw parseOidcError(error);
}
};
export const getUser = async (): Promise<User | null> => {
try {
@ -16,3 +41,5 @@ export const getUser = async (): Promise<User | null> => {
return null;
}
};
export type { AuthError };