Compare commits

..

2 commits

Author SHA1 Message Date
nquidox
2b08889218 cache fix
All checks were successful
/ Make image (push) Successful in 2m30s
2025-11-02 20:02:05 +03:00
nquidox
0e51451ad2 messages added 2025-11-02 19:49:06 +03:00
3 changed files with 43 additions and 8 deletions

View file

@ -58,6 +58,7 @@ export const useAuthStore = defineStore('auth', () => {
router.push({ name: 'collection'}) router.push({ name: 'collection'})
} catch (error) { } catch (error) {
console.error('Login error:', error) console.error('Login error:', error)
throw error
} }
} }

View file

@ -34,7 +34,7 @@ export const useLabelsStore = defineStore('labels', () => {
const getLabels = async () => { const getLabels = async () => {
try { try {
const response = await apiClient.get('/merch/labels') const response = await apiClient.get(`/merch/labels?_=${Date.now()}`)
const labelList = Array.isArray(response.data) ? response.data : [] const labelList = Array.isArray(response.data) ? response.data : []
labels.value = labelList labels.value = labelList
localStorage.setItem('labels', JSON.stringify(labelList)) localStorage.setItem('labels', JSON.stringify(labelList))
@ -46,7 +46,7 @@ export const useLabelsStore = defineStore('labels', () => {
const updateLabel = async (uuid, updatedData) => { const updateLabel = async (uuid, updatedData) => {
try { try {
await apiClient.put(`/merch/labels/${uuid}`, updatedData) await apiClient.put(`/merch/labels/${uuid}?_=${Date.now()}`, updatedData)
await getLabels() await getLabels()
} catch (error) { } catch (error) {
console.error('Failed to update label:', error) console.error('Failed to update label:', error)

View file

@ -2,16 +2,23 @@
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import { useAuthStore } from '@/stores/authStore.js' import { useAuthStore } from '@/stores/authStore.js'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { useMessage } from 'naive-ui'
const store = useAuthStore() const store = useAuthStore()
const messages = useMessage()
const { activeTab } = storeToRefs(store) const { activeTab } = storeToRefs(store)
const signInEmail = ref('') const signInEmail = ref('')
const signInPassword = ref('') const signInPassword = ref('')
const onSignIn = () => { const onSignIn = async () => {
store.login(signInEmail.value, signInPassword.value) try{
await store.login(signInEmail.value, signInPassword.value)
messages.success('Login success')
} catch (error) {
messages.error("Login error")
}
} }
const signUp = reactive({ const signUp = reactive({
@ -20,8 +27,35 @@ const signUp = reactive({
reenterPassword: '', reenterPassword: '',
}) })
const onSignUp = () => { const onSignUp = async () => {
store.register(signUp.email, signUp.password) if (!signUp.email.trim()) {
messages.error('Email is required')
return
}
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
if (!emailRegex.test(signUp.email)) {
messages.error('Please enter a valid email address')
return
}
if (!signUp.password.trim()) {
messages.error('Password is required')
return
}
if (signUp.password !== signUp.reenterPassword) {
messages.error('Passwords do not match')
return
}
try{
await store.register(signUp.email, signUp.password)
messages.success('Register success')
activeTab.value = 'signin'
} catch (error) {
messages.error("Register error")
}
} }
</script> </script>
@ -43,7 +77,7 @@ const onSignUp = () => {
<n-form-item-row label="Password"> <n-form-item-row label="Password">
<n-input v-model:value="signInPassword" type="password" show-password-on="click" /> <n-input v-model:value="signInPassword" type="password" show-password-on="click" />
</n-form-item-row> </n-form-item-row>
<n-button type="primary" block secondary strong attr-type="submit" @click="onSignIn"> Sign In</n-button> <n-button type="primary" block secondary strong attr-type="submit"> Sign In</n-button>
</n-form> </n-form>
</n-tab-pane> </n-tab-pane>
@ -58,7 +92,7 @@ const onSignUp = () => {
<n-form-item-row label="Reenter Password"> <n-form-item-row label="Reenter Password">
<n-input type="password" v-model:value="signUp.reenterPassword" show-password-on="click" /> <n-input type="password" v-model:value="signUp.reenterPassword" show-password-on="click" />
</n-form-item-row> </n-form-item-row>
<n-button type="primary" block secondary strong attr-type="submit" @click="onSignUp">Sign up</n-button> <n-button type="primary" block secondary strong attr-type="submit">Sign up</n-button>
</n-form> </n-form>
</n-tab-pane> </n-tab-pane>
</n-tabs> </n-tabs>