tensense's picture
Upload folder using huggingface_hub
4e909c7 verified
import Cookies from 'js-cookie';
const AUTH_COOKIE = 'laddr_auth';
export interface AuthUser {
username: string;
authenticated: boolean;
}
export const login = (username: string, password: string): boolean => {
// Parse DASH_USERS from environment (format: "user1:pass1,user2:pass2")
const dashUsers = import.meta.env.VITE_DASH_USERS || 'admin:admin';
const userPairs = dashUsers.split(',').map((pair: string) => {
const [u, p] = pair.split(':');
return { username: u?.trim(), password: p?.trim() };
});
const validUser = userPairs.find(
(u) => u.username === username && u.password === password
);
if (validUser) {
const token = btoa(`${username}:${Date.now()}`);
Cookies.set(AUTH_COOKIE, token, { expires: 7 }); // 7 days
localStorage.setItem('auth_token', token);
localStorage.setItem('auth_user', username);
return true;
}
return false;
};
export const logout = () => {
Cookies.remove(AUTH_COOKIE);
localStorage.removeItem('auth_token');
localStorage.removeItem('auth_user');
};
export const isAuthenticated = (): boolean => {
return !!Cookies.get(AUTH_COOKIE);
};
export const getCurrentUser = (): AuthUser | null => {
const token = Cookies.get(AUTH_COOKIE);
const username = localStorage.getItem('auth_user');
if (token && username) {
return {
username,
authenticated: true,
};
}
return null;
};