mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-15 17:24:10 +00:00
- Add Administration sidebar section (super-admin only) with Companies, Users, and Global Settings pages - Add super-admin middleware, controllers, and API routes under /api/v1/super-admin/ - Allow super-admins to manage all companies and users across tenants - Add user impersonation with short-lived tokens, audit logging, and UI banner - Move system-level settings (Mail, PDF, Backup, Update, File Disk) from per-company to Administration > Global Settings - Convert save_pdf_to_disk from CompanySetting to global Setting - Add per-company mail configuration overrides (optional, falls back to global) - Add CompanyMailConfigService to apply company mail config before sending emails
92 lines
2.5 KiB
JavaScript
Vendored
92 lines
2.5 KiB
JavaScript
Vendored
import http from '@/scripts/http'
|
|
import { defineStore } from 'pinia'
|
|
import { useNotificationStore } from '@/scripts/stores/notification'
|
|
import { handleError } from '@/scripts/helpers/error-handling'
|
|
|
|
export const useCompanyMailStore = defineStore('company-mail', {
|
|
state: () => ({
|
|
mailConfigData: null,
|
|
mail_driver: '',
|
|
mail_drivers: [],
|
|
}),
|
|
|
|
actions: {
|
|
fetchMailDrivers() {
|
|
return new Promise((resolve, reject) => {
|
|
http
|
|
.get('/api/v1/mail/drivers')
|
|
.then((response) => {
|
|
if (response.data) {
|
|
this.mail_drivers = response.data
|
|
}
|
|
resolve(response)
|
|
})
|
|
.catch((err) => {
|
|
handleError(err)
|
|
reject(err)
|
|
})
|
|
})
|
|
},
|
|
|
|
fetchMailConfig() {
|
|
return new Promise((resolve, reject) => {
|
|
http
|
|
.get('/api/v1/company/mail/company-config')
|
|
.then((response) => {
|
|
if (response.data) {
|
|
this.mailConfigData = response.data
|
|
this.mail_driver = response.data.mail_driver || ''
|
|
}
|
|
resolve(response)
|
|
})
|
|
.catch((err) => {
|
|
handleError(err)
|
|
reject(err)
|
|
})
|
|
})
|
|
},
|
|
|
|
updateMailConfig(data) {
|
|
return new Promise((resolve, reject) => {
|
|
http
|
|
.post('/api/v1/company/mail/company-config', data)
|
|
.then((response) => {
|
|
const { global } = window.i18n
|
|
const notificationStore = useNotificationStore()
|
|
notificationStore.showNotification({
|
|
type: 'success',
|
|
message: global.t('settings.mail.company_mail_config_updated'),
|
|
})
|
|
resolve(response)
|
|
})
|
|
.catch((err) => {
|
|
handleError(err)
|
|
reject(err)
|
|
})
|
|
})
|
|
},
|
|
|
|
sendTestMail(data) {
|
|
return new Promise((resolve, reject) => {
|
|
http
|
|
.post('/api/v1/company/mail/company-test', data)
|
|
.then((response) => {
|
|
const { global } = window.i18n
|
|
const notificationStore = useNotificationStore()
|
|
if (response.data.success) {
|
|
notificationStore.showNotification({
|
|
type: 'success',
|
|
message: global.t('general.send_mail_successfully'),
|
|
})
|
|
}
|
|
resolve(response)
|
|
})
|
|
.catch((err) => {
|
|
handleError(err)
|
|
reject(err)
|
|
})
|
|
})
|
|
},
|
|
},
|
|
})
|