Compare commits

...

2 commits

Author SHA1 Message Date
f9a95317a2 restore session from localstorage 2024-01-07 23:03:22 +01:00
54e5ba6e8e add permissions in ticket models 2024-01-07 22:29:37 +01:00
3 changed files with 22 additions and 10 deletions

View file

@ -55,6 +55,12 @@ def create_issue_thread(sender, instance, created, **kwargs):
if created:
StateChange.objects.create(issue_thread=instance, state='pending_new')
class Meta:
permissions = [
('send_mail', 'Can send mail'),
('add_issuethread_manual', 'Can add issue thread manually'),
]
class Comment(models.Model):
id = models.AutoField(primary_key=True)

View file

@ -68,6 +68,10 @@ const routes = [
path: 'users/', name: 'users', component: AccessControl, meta:
{requiresAuth: true, requiresPermission: 'delete_event'}
},
{
path: 'boxes/', name: 'admin_boxes', component: BoxesAdmin, meta:
{requiresAuth: true, requiresPermission: 'delete_event'}
},
]
},
{path: '/user', name: 'user', component: Empty, meta: {requiresAuth: true}},

View file

@ -110,12 +110,14 @@ const store = new Vuex.Store({
},
isLoggedIn(state) {
if (!state.local_loaded) {
state.remember = localStorage.getItem('remember') === 'true'
state.user = localStorage.getItem('user')
state.userPermissions = JSON.parse(localStorage.getItem('permissions') || '[]')
state.token = localStorage.getItem('token')
state.token_expiry = localStorage.getItem('token_expiry')
state.local_loaded = true
state.remember = localStorage.getItem('remember') === 'true';
state.user = localStorage.getItem('user');
//state.password = localStorage.getItem('password');
state.userPermissions = JSON.parse(localStorage.getItem('permissions') || '[]');
state.token = localStorage.getItem('token');
state.token_expiry = localStorage.getItem('token_expiry');
state.local_loaded = true;
axios.defaults.headers.common['Authorization'] = `Token ${state.token}`;
}
return state.user !== null && state.token !== null;
@ -234,7 +236,7 @@ const store = new Vuex.Store({
body: JSON.stringify({username: username, password: password}),
credentials: 'omit'
}).then(r => r.json())
if (data.token) {
if (data && data.token) {
commit('setToken', data);
commit('setUser', username);
commit('setPassword', password);
@ -251,14 +253,14 @@ const store = new Vuex.Store({
},
async reloadToken({commit, state}) {
try {
if (data.password) {
if (state.password) {
const data = await fetch('/api/2/login/', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({username: state.user, password: state.password}),
credentials: 'omit'
}).then(r => r.json())
if (data.token) {
}).then(r => r.json()).catch(e => console.error(e))
if (data && data.token) {
commit('setToken', data);
axios.defaults.headers.common['Authorization'] = `Token ${data.token}`;
return true;