add class AdminAPI and admin.vue
This commit is contained in:
parent
8ea5c46920
commit
7292700cc9
@ -14,6 +14,7 @@
|
|||||||
"jdenticon": "^3.1.0",
|
"jdenticon": "^3.1.0",
|
||||||
"matrix-js-sdk": "^9.1.0",
|
"matrix-js-sdk": "^9.1.0",
|
||||||
"sass": "^1.29.0",
|
"sass": "^1.29.0",
|
||||||
|
"superagent": "^6.1.0",
|
||||||
"v-emoji-picker": "^2.3.1",
|
"v-emoji-picker": "^2.3.1",
|
||||||
"vue": "^2.6.11",
|
"vue": "^2.6.11",
|
||||||
"ws": "^7.3.1"
|
"ws": "^7.3.1"
|
||||||
|
41
src/lib/AdminAPI.js
Normal file
41
src/lib/AdminAPI.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import rest from 'superagent';
|
||||||
|
|
||||||
|
export class AdminAPI{
|
||||||
|
constructor(baseUrl, accessToken){
|
||||||
|
this.baseUrl = baseUrl;
|
||||||
|
this.accessToken = accessToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
async sendRequest({path, obj={}, method=rest=>rest.get}){
|
||||||
|
return await method(rest)(`${this.baseUrl}${path}?access_token=${this.accessToken}`)
|
||||||
|
.send(JSON.stringify(obj)).set('accept', 'json').then(res => {
|
||||||
|
return JSON.parse(res.text);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async getUsers(){
|
||||||
|
return await this.sendRequest({path: 'users'});
|
||||||
|
}
|
||||||
|
async resetPassword(userId, newPassword){
|
||||||
|
return await this.sendRequest({
|
||||||
|
path: `reset_password/${userId}`,
|
||||||
|
obj: {
|
||||||
|
new_password: newPassword,
|
||||||
|
logout_devices: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
async createUser(userId, password, displayName, avatarUrl=undefined){
|
||||||
|
return await this.sendRequest({
|
||||||
|
path: `reset_password/${userId}`,
|
||||||
|
method: rest=>rest.put,
|
||||||
|
obj: {
|
||||||
|
'password': password,
|
||||||
|
'displayname': displayName,
|
||||||
|
'avatar_url': avatarUrl,
|
||||||
|
'admin': false,
|
||||||
|
'deactivated': false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -31,6 +31,7 @@ export class MatrixHandler {
|
|||||||
callback(response.access_token);
|
callback(response.access_token);
|
||||||
this.user = user;
|
this.user = user;
|
||||||
this.baseUrl = baseUrl;
|
this.baseUrl = baseUrl;
|
||||||
|
this.accessToken = response.access_token;
|
||||||
this.startSync()
|
this.startSync()
|
||||||
}
|
}
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
@ -49,6 +50,7 @@ export class MatrixHandler {
|
|||||||
});
|
});
|
||||||
this.user = userId;
|
this.user = userId;
|
||||||
this.baseUrl = baseUrl;
|
this.baseUrl = baseUrl;
|
||||||
|
this.accessToken = accessToken;
|
||||||
this.startSync();
|
this.startSync();
|
||||||
}
|
}
|
||||||
async logout(){
|
async logout(){
|
||||||
|
@ -2,6 +2,7 @@ import VueRouter from 'vue-router';
|
|||||||
import login from '@/views/login';
|
import login from '@/views/login';
|
||||||
import chat from '@/views/chat';
|
import chat from '@/views/chat';
|
||||||
import rooms from '@/views/rooms';
|
import rooms from '@/views/rooms';
|
||||||
|
import admin from '@/views/admin';
|
||||||
|
|
||||||
export const router = new VueRouter({
|
export const router = new VueRouter({
|
||||||
routes: [
|
routes: [
|
||||||
@ -29,6 +30,11 @@ export const router = new VueRouter({
|
|||||||
path: '/rooms',
|
path: '/rooms',
|
||||||
name: 'rooms',
|
name: 'rooms',
|
||||||
component: rooms
|
component: rooms
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/admin',
|
||||||
|
name: 'admin',
|
||||||
|
component: admin
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
})
|
91
src/views/admin.vue
Normal file
91
src/views/admin.vue
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
<template>
|
||||||
|
<div class="admin">
|
||||||
|
<h2>users</h2>
|
||||||
|
<table v-if="users">
|
||||||
|
<tr>
|
||||||
|
<th class="left">user</th>
|
||||||
|
<th class="mid">displayname</th>
|
||||||
|
<th class="mid">deactivated</th>
|
||||||
|
<th class="right">admin</th>
|
||||||
|
</tr>
|
||||||
|
<tr v-for="user in users.users" :key="user.name">
|
||||||
|
<td class="left">{{user.name}}</td>
|
||||||
|
<td class="mid">{{user.displayname}}</td>
|
||||||
|
<td class="mid">{{user.deactivated}}</td>
|
||||||
|
<td class="right">{{user.admin}}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {matrix} from "@/main";
|
||||||
|
import {AdminAPI} from "@/lib/AdminAPI";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "admin",
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
users: undefined
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async created() {
|
||||||
|
this.api = new AdminAPI(matrix.baseUrl+'/_synapse/admin/v2/', matrix.accessToken);
|
||||||
|
this.users = await this.api.getUsers('users');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.admin{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
position: relative;
|
||||||
|
margin: auto;
|
||||||
|
width: calc(100% - 2rem);
|
||||||
|
max-width: 40rem;
|
||||||
|
background-color: #1f262b;
|
||||||
|
box-shadow: 3px 3px 10px #333;
|
||||||
|
border: 2px solid #fff;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-spacing: 2px;
|
||||||
|
border-radius: 0.75rem;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
font-family: "Roboto", regular, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr {
|
||||||
|
margin: auto;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
margin: auto;
|
||||||
|
background-color: #546E7A;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
margin: auto;
|
||||||
|
background-color: #37474F;
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.left, th.left {
|
||||||
|
border-radius: 0.5rem 0 0 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.right, th.right {
|
||||||
|
border-radius: 0 0.5rem 0.5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.mid, th.mid {
|
||||||
|
border-radius: 0 0 0 0;
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in New Issue
Block a user