diff --git a/src/components/Menu2.vue b/src/components/Menu2.vue index a3b73ff7..42d1785d 100644 --- a/src/components/Menu2.vue +++ b/src/components/Menu2.vue @@ -58,6 +58,34 @@ text height="100%" >Developer + + + + + + Settings + + + User + + + Apps + + + Invites + + + { - //this.$store.getters.getSettingValue(this.$store.state, name); - } }, methods: { - generateMenu: function () { - this.menu = []; - if(!this.$store.state.loggedIn) { - this.menu.push({ icon: 'home', title: 'Login' , link: "Login" }); - if(this.$store.getters.getSettingValue("invites")) { - this.menu.push({ icon: 'home', title: 'Invited' , link: "Invited" }); - } - if(this.$store.getters.getSettingValue("registration_possible")) { - this.menu.push({ icon: 'home', title: 'Register' , link: "Register" }); - } - } else { - if(this.$store.getters.getMe.developer) { - this.menu.push({ icon: 'home', title: 'Apps' , link: "Apps" }); - } - if(this.$store.getters.getMe.admin) { - this.menu.push({ icon: 'home', title: 'Admin' , link: "Admin" }); - } - this.menu.push({ icon: 'home', title: 'Profile' , link: "profile", submenu: true, menu: [ - { icon: 'home', title: 'Logout' , link: "Logout" } - ] }); - } - }, - handleScroll: function (evt, el) { - if(evt.pageY > 100) { - this.big = false; - this.bgcolor = "#fff"; - this.flat = false; - } else { - this.big = true; - this.bgcolor = "transparent"; - this.flat = true; - } - } + }, mounted: function () { - this.nameBig = this.$store.getters.getSettingValue("name_big"); - this.nameSmall = this.$store.getters.getSettingValue("name_small"); - this.generateMenu(); + } } diff --git a/src/router/index.js b/src/router/index.js index 80ab5019..160fbf2a 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,6 +14,8 @@ import Register from '../views/Register' import Access from '../views/Access' import Profile from '../views/Profile' +import AdminSettings from '../views/admin/Settings' + Vue.use(Router) function guard(to, from, next){ @@ -25,6 +27,15 @@ function guard(to, from, next){ } } +function admin(to, from, next){ + if(store.state.loggedIn) { + next(); // allow to enter route + } else{ + store.state.redirectIfLoggedIn = to; + next('/login'); // go to '/login'; + } +} + export default new Router({ routes: [ { @@ -93,6 +104,13 @@ export default new Router({ path: '/user/mails', name: 'userMails', component: Mail - } + }, + { + beforeEnter: admin, + path: '/admin/settings', + name: 'adminSettings', + component: AdminSettings + }, + ] }) diff --git a/src/services/Admin.js b/src/services/Admin.js new file mode 100644 index 00000000..668061ee --- /dev/null +++ b/src/services/Admin.js @@ -0,0 +1,7 @@ +import Api from '@/services/Api' + +export default { + saveSettings(settings) { + return Api().post('/v1/admin/settings', settings); + } +} diff --git a/src/services/Server.js b/src/services/Server.js index 3c1b0ba7..1348533e 100644 --- a/src/services/Server.js +++ b/src/services/Server.js @@ -4,6 +4,9 @@ export default { getPublicSettings (params) { return Api().get('/v1/server/settings') }, + getAllSettings () { + return Api().get('/v1/server/settings?all=1') + }, getStatus () { return Api().get("/v1/status/check") } diff --git a/src/services/User.js b/src/services/User.js index 5a5bb5f7..3b4e81ab 100644 --- a/src/services/User.js +++ b/src/services/User.js @@ -32,10 +32,16 @@ export default { removeMail(mailID) { return Api().delete('/v1/user/me/mail/'+mailID); }, + markMailAsPrimary(mailID) { + return Api().post('/v1/user/me/mail/'+mailID+'/markAsPrimary'); + }, getCaptchaSettings() { return Api().get("/v1/user/captcha"); }, getInviteCodeInfo(code) { return Api().get("/v1/user/invites?code="+code) + }, + changePassword(newPassword) { + return Api().post("/v1/user/me/changePassword", {"password": newPassword}); } } diff --git a/src/views/Profile.vue b/src/views/Profile.vue index 1d46f258..3d449dcf 100644 --- a/src/views/Profile.vue +++ b/src/views/Profile.vue @@ -27,7 +27,7 @@ Remove Mail - Mark as Primary + Mark as Primary @@ -48,6 +48,20 @@ Add Mail

Password

+

New Password

+ + + Change Password + @@ -66,7 +80,8 @@ nameBig: '', nameSmall: '', mails: [], - newmail: '' + newmail: '', + newpassword: '' } }, components: { @@ -87,6 +102,18 @@ UserService.removeMail(id).then((res) => { this.getMails(); }); + }, + markAsPrimary: function(id) { + UserService.markMailAsPrimary(id).then((res) => { + this.getMails(); + }) + }, + changePassword: function() { + UserService.changePassword(this.newpassword).then(() => { + alert("Password changed"); + }).catch((res) => { + alert("There was an error: "+res.response.data.data.password[0]); + }); } }, mounted: function() { diff --git a/src/views/Register.vue b/src/views/Register.vue index b986b711..597c11c1 100644 --- a/src/views/Register.vue +++ b/src/views/Register.vue @@ -93,7 +93,7 @@ export default { data () { return { - success: true, + success: false, inviteCode: '', errorMsg: '', username: '', diff --git a/src/views/admin/Settings.vue b/src/views/admin/Settings.vue new file mode 100644 index 00000000..06d67ed3 --- /dev/null +++ b/src/views/admin/Settings.vue @@ -0,0 +1,230 @@ + + + + +