diff --git a/package.json b/package.json
index 8ed94cb..c57fd22 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"jdenticon": "^3.1.0",
"matrix-js-sdk": "^9.1.0",
"sass": "^1.29.0",
+ "superagent": "^6.1.0",
"v-emoji-picker": "^2.3.1",
"vue": "^2.6.11",
"ws": "^7.3.1"
diff --git a/src/lib/AdminAPI.js b/src/lib/AdminAPI.js
new file mode 100644
index 0000000..0f83d4b
--- /dev/null
+++ b/src/lib/AdminAPI.js
@@ -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
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/lib/matrixHandler.js b/src/lib/matrixHandler.js
index c7ec4f9..32a41f2 100644
--- a/src/lib/matrixHandler.js
+++ b/src/lib/matrixHandler.js
@@ -31,6 +31,7 @@ export class MatrixHandler {
callback(response.access_token);
this.user = user;
this.baseUrl = baseUrl;
+ this.accessToken = response.access_token;
this.startSync()
}
}).catch(error => {
@@ -49,6 +50,7 @@ export class MatrixHandler {
});
this.user = userId;
this.baseUrl = baseUrl;
+ this.accessToken = accessToken;
this.startSync();
}
async logout(){
diff --git a/src/router.js b/src/router.js
index 98f0ff5..c96523c 100644
--- a/src/router.js
+++ b/src/router.js
@@ -2,6 +2,7 @@ import VueRouter from 'vue-router';
import login from '@/views/login';
import chat from '@/views/chat';
import rooms from '@/views/rooms';
+import admin from '@/views/admin';
export const router = new VueRouter({
routes: [
@@ -29,6 +30,11 @@ export const router = new VueRouter({
path: '/rooms',
name: 'rooms',
component: rooms
+ },
+ {
+ path: '/admin',
+ name: 'admin',
+ component: admin
}
]
})
\ No newline at end of file
diff --git a/src/views/admin.vue b/src/views/admin.vue
new file mode 100644
index 0000000..3d82a3f
--- /dev/null
+++ b/src/views/admin.vue
@@ -0,0 +1,91 @@
+
+
+
users
+
+
+ user |
+ displayname |
+ deactivated |
+ admin |
+
+
+ {{user.name}} |
+ {{user.displayname}} |
+ {{user.deactivated}} |
+ {{user.admin}} |
+
+
+
+
+
+
+
+
\ No newline at end of file