YoLo
This commit is contained in:
parent
95284448f8
commit
67286e106f
6 changed files with 253 additions and 2 deletions
|
@ -78,10 +78,10 @@
|
||||||
<v-list-item to="/admin/user">
|
<v-list-item to="/admin/user">
|
||||||
<v-list-item-title>User</v-list-item-title>
|
<v-list-item-title>User</v-list-item-title>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item to="/access">
|
<v-list-item to="/admin/app">
|
||||||
<v-list-item-title>Apps</v-list-item-title>
|
<v-list-item-title>Apps</v-list-item-title>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item to="/access">
|
<v-list-item to="/admin/invite">
|
||||||
<v-list-item-title>Invites</v-list-item-title>
|
<v-list-item-title>Invites</v-list-item-title>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
|
|
|
@ -17,6 +17,9 @@ import Profile from '../views/Profile'
|
||||||
import AdminSettings from '../views/admin/Settings'
|
import AdminSettings from '../views/admin/Settings'
|
||||||
import AdminUserList from '../views/admin/User'
|
import AdminUserList from '../views/admin/User'
|
||||||
import AdminUserEdit from '../views/admin/UserEdit'
|
import AdminUserEdit from '../views/admin/UserEdit'
|
||||||
|
import AdminAppsList from '../views/admin/App'
|
||||||
|
import AdminAppDetails from '../views/admin/AppDetail'
|
||||||
|
import AdminInvite from '../views/admin/Invite'
|
||||||
|
|
||||||
Vue.use(Router)
|
Vue.use(Router)
|
||||||
|
|
||||||
|
@ -125,5 +128,25 @@ export default new Router({
|
||||||
name: 'adminUserEdit',
|
name: 'adminUserEdit',
|
||||||
component: AdminUserEdit
|
component: AdminUserEdit
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
beforeEnter: admin,
|
||||||
|
path: '/admin/app',
|
||||||
|
name: 'adminListApp',
|
||||||
|
component: AdminAppsList
|
||||||
|
},
|
||||||
|
{
|
||||||
|
beforeEnter: admin,
|
||||||
|
path: '/admin/app/:id',
|
||||||
|
name: 'adminAppDetail',
|
||||||
|
component: AdminAppDetails
|
||||||
|
},
|
||||||
|
{
|
||||||
|
beforeEnter: admin,
|
||||||
|
path: '/admin/invite',
|
||||||
|
name: 'adminInvite',
|
||||||
|
component: AdminInvite
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
|
@ -18,5 +18,14 @@ export default {
|
||||||
},
|
},
|
||||||
validateMail(id) {
|
validateMail(id) {
|
||||||
return Api().put("/v1/admin/mail/"+id+"/status", {"status": "valide"});
|
return Api().put("/v1/admin/mail/"+id+"/status", {"status": "valide"});
|
||||||
|
},
|
||||||
|
getAppList() {
|
||||||
|
return Api().get("/v1/admin/app");
|
||||||
|
},
|
||||||
|
saveAppProperties(id, properties) {
|
||||||
|
return Api().put("/v1/admin/app/"+id+"/properties", properties);
|
||||||
|
},
|
||||||
|
listInvites() {
|
||||||
|
return Api().get("/v1/admin/invite");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
49
src/views/admin/App.vue
Normal file
49
src/views/admin/App.vue
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
<template>
|
||||||
|
<div style="margin-top: 50px;">
|
||||||
|
<v-container grid-list-md pa-10>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex md12>
|
||||||
|
<h1>Apps</h1>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
|
||||||
|
<AppCards :apps="apps" v-on:appClick="navigateToAppSettingPage"></AppCards>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-container>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import AdminService from '../../services/Admin'
|
||||||
|
import AppCardsComponente from '../../components/AppCards'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
apps: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
"AppCards": AppCardsComponente
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
'loadApp': function () {
|
||||||
|
AdminService.getAppList().then((res) => {
|
||||||
|
this.apps = res.data.data;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
'navigateToAppSettingPage': function(app) {
|
||||||
|
this.$router.push({"path": "/admin/app/"+app.id})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted: function() {
|
||||||
|
this.loadApp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
107
src/views/admin/AppDetail.vue
Normal file
107
src/views/admin/AppDetail.vue
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
<template>
|
||||||
|
<div style="margin-top: 50px;">
|
||||||
|
<v-container grid-list-md pa-10>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex md12>
|
||||||
|
<h1>App Detail: {{ app.name }}</h1>
|
||||||
|
<p>{{ app.description }}</p>
|
||||||
|
<a :href="app.url">{{ app.url }}</a>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<v-simple-table>
|
||||||
|
<template v-slot:default>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="text-left">Name</th>
|
||||||
|
<th class="text-left">Description</th>
|
||||||
|
<th class="text-right"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Auto Accept</td>
|
||||||
|
<td>User dont have to click login, if the user is logged in he/she will immediately redirected back.</td>
|
||||||
|
<td class="text-right"><v-checkbox v-model="app.properties.autoAccept"></v-checkbox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Testing Warning</td>
|
||||||
|
<td>Show warning that the Application is just in testing mode</td>
|
||||||
|
<td class="text-right"><v-checkbox v-model="app.properties.testingWarning"></v-checkbox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Untrusted Warning</td>
|
||||||
|
<td>Show warning that the Application is untrusted</td>
|
||||||
|
<td class="text-right"><v-checkbox v-model="app.properties.untrustedWarning"></v-checkbox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Show on Webpage</td>
|
||||||
|
<td>Show this App on the Webpage.</td>
|
||||||
|
<td class="text-right"><v-checkbox v-model="app.properties.showOnWebpage"></v-checkbox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Hide in App list</td>
|
||||||
|
<td>User cant see this App in his app list</td>
|
||||||
|
<td class="text-right"><v-checkbox v-model="app.properties.hideInAppList"></v-checkbox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Disable remove Access</td>
|
||||||
|
<td>User can't remove Access to this App in the AppList</td>
|
||||||
|
<td class="text-right"><v-checkbox v-model="app.properties.userCantRemoveApp"></v-checkbox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Disable auto redirect</td>
|
||||||
|
<td>User always have to click a button to go to the App</td>
|
||||||
|
<td class="text-right"><v-checkbox v-model="app.properties.stopAutoRedirect"></v-checkbox></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</template>
|
||||||
|
</v-simple-table>
|
||||||
|
<v-btn
|
||||||
|
color="success"
|
||||||
|
@click="save"
|
||||||
|
>
|
||||||
|
Save
|
||||||
|
</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-container>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import AdminService from '../../services/Admin'
|
||||||
|
import AppService from '../../services/Apps'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
app: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
'loadApp': function () {
|
||||||
|
AppService.getApp(this.$route.params.id).then((res) => {
|
||||||
|
this.app = res.data.data
|
||||||
|
});
|
||||||
|
},
|
||||||
|
'save': function () {
|
||||||
|
AdminService.saveAppProperties(this.$route.params.id, this.app.properties).then((res) => {
|
||||||
|
alert("Changes saved");
|
||||||
|
this.loadApp();
|
||||||
|
}).catch((res) => {
|
||||||
|
alert("Something go wrong");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted: function() {
|
||||||
|
this.loadApp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
63
src/views/admin/Invite.vue
Normal file
63
src/views/admin/Invite.vue
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
<template>
|
||||||
|
<div style="margin-top: 50px;">
|
||||||
|
<v-container grid-list-md pa-10>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex md12>
|
||||||
|
<h1>Invites</h1>
|
||||||
|
<br><br>
|
||||||
|
<v-simple-table>
|
||||||
|
<template v-slot:default>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="text-left">#</th>
|
||||||
|
<th class="text-left">Username</th>
|
||||||
|
<th class="text-left">Status</th>
|
||||||
|
<th class="text-left">Invide Token</th>
|
||||||
|
<th class="text-left">Comment</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr v-for="item in invites" :key="item.name">
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td>{{ item.username }}</td>
|
||||||
|
<td>{{ item.status }}</td>
|
||||||
|
<td>{{ item.code }}</td>
|
||||||
|
<td>{{ item.comment }}</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 {
|
||||||
|
invites: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
'loadApp': function () {
|
||||||
|
AdminService.listInvites().then((res) => {
|
||||||
|
this.invites = res.data.data;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted: function() {
|
||||||
|
this.loadApp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
Reference in a new issue