scaffold blog_portal vue 3 + pinia + cypress frontend
Mirrors youngstartup/frontend/startups_portal scaffolding: Vite, Vue 3 (composition API + script setup), TypeScript strict, Pinia, Vue Router 5, oxlint + eslint + oxfmt, and Cypress with db:reset / db:seed tasks. Views and the auth store are stubs filled in by the next branches; routes and the header chrome are wired so the build passes.
This commit is contained in:
parent
6f95a5b7b8
commit
568dc4aabe
27 changed files with 8376 additions and 0 deletions
37
frontend/blog_portal/src/stores/auth.ts
Normal file
37
frontend/blog_portal/src/stores/auth.ts
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import { defineStore } from "pinia";
|
||||
import { ref } from "vue";
|
||||
|
||||
export interface AuthUser {
|
||||
id: number;
|
||||
email: string;
|
||||
displayName: string;
|
||||
isAdmin: boolean;
|
||||
}
|
||||
|
||||
export const useAuthStore = defineStore("auth", () => {
|
||||
const user = ref<AuthUser | null>(null);
|
||||
const checked = ref(false);
|
||||
const error = ref<string | null>(null);
|
||||
|
||||
async function fetchMe(): Promise<boolean> {
|
||||
checked.value = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
async function logout(): Promise<void> {
|
||||
user.value = null;
|
||||
}
|
||||
|
||||
function clearError(): void {
|
||||
error.value = null;
|
||||
}
|
||||
|
||||
return {
|
||||
user,
|
||||
checked,
|
||||
error,
|
||||
fetchMe,
|
||||
logout,
|
||||
clearError,
|
||||
};
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue