YoLo
This commit is contained in:
parent
1b2f22ca31
commit
95284448f8
7 changed files with 261 additions and 5 deletions
|
@ -9,7 +9,7 @@
|
|||
|
||||
|
||||
>
|
||||
<v-app-bar-nav-icon class="d-flex d-md-none" @click="toggleMenu()"></v-app-bar-nav-icon>
|
||||
<v-app-bar-nav-icon v-if="this.$store.getters.getSettingValue('registration_possible') || this.$store.getters.getSettingValue('invite')" class="d-flex d-md-none" @click="toggleMenu()"></v-app-bar-nav-icon>
|
||||
|
||||
<v-toolbar-title><b>{{nameBig}}</b>{{nameSmall}}</v-toolbar-title>
|
||||
|
||||
|
@ -75,7 +75,7 @@
|
|||
<v-list-item to="/admin/settings">
|
||||
<v-list-item-title>Settings</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item to="/access">
|
||||
<v-list-item to="/admin/user">
|
||||
<v-list-item-title>User</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item to="/access">
|
||||
|
|
|
@ -15,6 +15,8 @@ import Access from '../views/Access'
|
|||
import Profile from '../views/Profile'
|
||||
|
||||
import AdminSettings from '../views/admin/Settings'
|
||||
import AdminUserList from '../views/admin/User'
|
||||
import AdminUserEdit from '../views/admin/UserEdit'
|
||||
|
||||
Vue.use(Router)
|
||||
|
||||
|
@ -111,6 +113,17 @@ export default new Router({
|
|||
name: 'adminSettings',
|
||||
component: AdminSettings
|
||||
},
|
||||
|
||||
{
|
||||
beforeEnter: admin,
|
||||
path: '/admin/user',
|
||||
name: 'adminUserList',
|
||||
component: AdminUserList
|
||||
},
|
||||
{
|
||||
beforeEnter: admin,
|
||||
path: '/admin/user/:id',
|
||||
name: 'adminUserEdit',
|
||||
component: AdminUserEdit
|
||||
},
|
||||
]
|
||||
})
|
||||
|
|
|
@ -3,5 +3,20 @@ import Api from '@/services/Api'
|
|||
export default {
|
||||
saveSettings(settings) {
|
||||
return Api().post('/v1/admin/settings', settings);
|
||||
},
|
||||
getUserList() {
|
||||
return Api().get("/v1/admin/user");
|
||||
},
|
||||
getUserDetails(id) {
|
||||
return Api().get("/v1/admin/user/"+id);
|
||||
},
|
||||
updateUser(id, username, admin, developer) {
|
||||
return Api().put("/v1/admin/user/"+id, {"username": username, "admin": admin, "developer": developer});
|
||||
},
|
||||
resendValidationMail(id) {
|
||||
return Api().post("/v1/admin/mail/"+id+"/resend")
|
||||
},
|
||||
validateMail(id) {
|
||||
return Api().put("/v1/admin/mail/"+id+"/status", {"status": "valide"});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,8 +99,14 @@
|
|||
this.nameBig = this.$store.getters.getSettingValue("name_big");
|
||||
this.nameSmall = this.$store.getters.getSettingValue("name_small");
|
||||
this.slogen = this.$store.getters.getSettingValue("name_slogen");
|
||||
|
||||
if(this.$store.getters.getSettingValue("startpage") == false) {
|
||||
this.$router.push({"path": "login"})
|
||||
} else {
|
||||
this.getStartpageApps();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
></v-checkbox>
|
||||
<v-checkbox
|
||||
v-model="serverSettings['invites']"
|
||||
label="Invites possible"
|
||||
label="Show invite link on Startpage"
|
||||
></v-checkbox>
|
||||
<v-checkbox
|
||||
v-model="serverSettings['startpage']"
|
||||
|
|
69
src/views/admin/User.vue
Normal file
69
src/views/admin/User.vue
Normal file
|
@ -0,0 +1,69 @@
|
|||
<template>
|
||||
<div style="margin-top: 50px;">
|
||||
<v-container grid-list-md pa-10>
|
||||
<v-layout row wrap>
|
||||
<v-flex md12>
|
||||
<h1>Users</h1>
|
||||
<br><br>
|
||||
<p>Here you can Administrate your apps</p>
|
||||
|
||||
<v-simple-table>
|
||||
<template v-slot:default>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-left">Name</th>
|
||||
<th class="text-left">Status</th>
|
||||
<th class="text-left">Primary Mail</th>
|
||||
<th class="text-left">Flags</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr @click="userDetails(item.id)" v-for="item in user" :key="item.name">
|
||||
<td>{{ item.username }}</td>
|
||||
<td>{{ item.status }}</td>
|
||||
<td>{{ item.primaryMail }}</td>
|
||||
<td>
|
||||
<v-icon v-if="item.developer">mdi-code-tags</v-icon>
|
||||
<v-icon v-if="item.admin">mdi-account-key</v-icon>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</template>
|
||||
</v-simple-table>
|
||||
</v-flex>
|
||||
</v-layout>
|
||||
</v-container>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import AdminService from '../../services/Admin'
|
||||
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
user: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
},
|
||||
methods: {
|
||||
'loadUser': function () {
|
||||
AdminService.getUserList().then((res) => {
|
||||
this.user = res.data.data;
|
||||
})
|
||||
},
|
||||
'userDetails': function(id) {
|
||||
this.$router.push({"path": "/admin/user/"+id})
|
||||
}
|
||||
},
|
||||
mounted: function() {
|
||||
this.loadUser();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
153
src/views/admin/UserEdit.vue
Normal file
153
src/views/admin/UserEdit.vue
Normal file
|
@ -0,0 +1,153 @@
|
|||
<template>
|
||||
<div style="margin-top: 50px;">
|
||||
<v-container grid-list-md pa-10>
|
||||
<v-layout row wrap>
|
||||
<v-flex md12>
|
||||
<h1>Users Edit</h1>
|
||||
<br><br>
|
||||
<v-text-field
|
||||
label="Username"
|
||||
type="text"
|
||||
v-model="user.username"
|
||||
></v-text-field>
|
||||
<v-text-field
|
||||
label="Primary E-Mail"
|
||||
disabled=true
|
||||
type="text"
|
||||
v-model="user.primaryMail"
|
||||
></v-text-field>
|
||||
<v-text-field
|
||||
label="Created at"
|
||||
disabled=true
|
||||
type="text"
|
||||
v-model="user.created_at"
|
||||
></v-text-field>
|
||||
<v-text-field
|
||||
label="Updated at"
|
||||
disabled=true
|
||||
type="text"
|
||||
v-model="user.updated_at"
|
||||
></v-text-field>
|
||||
<v-text-field
|
||||
label="Invite Code"
|
||||
disabled=true
|
||||
type="text"
|
||||
v-model="user.inviteCode"
|
||||
></v-text-field>
|
||||
<v-select
|
||||
:items="statusAvalible"
|
||||
label="Status"
|
||||
v-model="user.status"
|
||||
disabled="disabled"
|
||||
></v-select>
|
||||
<v-checkbox
|
||||
v-model="user.developer"
|
||||
label="Developer"
|
||||
></v-checkbox>
|
||||
<v-checkbox
|
||||
v-model="user.admin"
|
||||
label="Admin Access"
|
||||
></v-checkbox>
|
||||
<v-btn
|
||||
color="success"
|
||||
@click="saveSettings"
|
||||
>Save</v-btn>
|
||||
<br><br>
|
||||
<v-simple-table>
|
||||
<template v-slot:default>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-left">#</th>
|
||||
<th class="text-left">Mail</th>
|
||||
<th>Status</th>
|
||||
<th class="text-right">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in mails" :key="item.id">
|
||||
<td>{{ item.id }}</td>
|
||||
<td>{{ item.mail }}</td>
|
||||
<td>{{ item.status }}</td>
|
||||
<td class="text-right">
|
||||
<v-menu offset-y>
|
||||
<template v-slot:activator="{ on }">
|
||||
<v-btn
|
||||
color="primary"
|
||||
v-on="on"
|
||||
>
|
||||
<v-icon>mdi-settings</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item
|
||||
:disabled="item.status != 'waiting'"
|
||||
link
|
||||
@click="validateMail(item.id)"
|
||||
>
|
||||
<v-list-item-title>Activate Mail adress</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item
|
||||
link
|
||||
@click="resendValidationMail(item.id)"
|
||||
>
|
||||
<v-list-item-title>Resend Validation Mail</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</template>
|
||||
</v-simple-table>
|
||||
</v-flex>
|
||||
</v-layout>
|
||||
</v-container>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import AdminService from '../../services/Admin'
|
||||
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
user: {},
|
||||
statusAvalible: ['active'],
|
||||
mails: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
},
|
||||
methods: {
|
||||
'loadUser': function () {
|
||||
AdminService.getUserDetails(this.$route.params.id).then((res) => {
|
||||
this.user = res.data.data.details;
|
||||
this.mails = res.data.data.mails;
|
||||
})
|
||||
},
|
||||
'saveSettings': function () {
|
||||
AdminService.updateUser(this.$route.params.id, this.user.username, this.user.admin, this.user.developer).then(() => {
|
||||
this.loadUser();
|
||||
});
|
||||
},
|
||||
'resendValidationMail': function(id) {
|
||||
AdminService.resendValidationMail(id).then((res) => {
|
||||
alert("Mail send again");
|
||||
});
|
||||
},
|
||||
'validateMail': function(id) {
|
||||
AdminService.validateMail(id).then((res) => {
|
||||
this.loadUser();
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted: function() {
|
||||
this.loadUser();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
Reference in a new issue