diff --git a/motorradig/.idea/workspace.xml b/motorradig/.idea/workspace.xml index 662a00a..09454e3 100644 --- a/motorradig/.idea/workspace.xml +++ b/motorradig/.idea/workspace.xml @@ -2,11 +2,14 @@ + - + - + + + + + + + + - - - - - @@ -229,7 +232,8 @@ - + + @@ -265,10 +269,10 @@ - + - + diff --git a/motorradig/app/Http/Controllers/AuthController.php b/motorradig/app/Http/Controllers/AuthController.php index 7785c79..6744e5b 100644 --- a/motorradig/app/Http/Controllers/AuthController.php +++ b/motorradig/app/Http/Controllers/AuthController.php @@ -74,6 +74,12 @@ class AuthController extends Controller { ]); } + // Get list of all users + public function userlist() { + return User::all(); + } + + /** * Refresh JWT token */ diff --git a/motorradig/public/js/app.js b/motorradig/public/js/app.js index 2319953..005a70c 100644 --- a/motorradig/public/js/app.js +++ b/motorradig/public/js/app.js @@ -2035,6 +2035,10 @@ __webpack_require__.r(__webpack_exports__); editPage: function editPage() { this.$router.push('/edit_page'); }, + userlistPage: function userlistPage() { + console.log("Pushing to userlistPage!"); + this.$router.push('/userlist'); + }, loadPage: function loadPage(page_name) { var _this2 = this; @@ -2071,6 +2075,136 @@ __webpack_require__.r(__webpack_exports__); /***/ }), +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/UserList.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/UserList.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + data: function data() { + return { + email: '', + password: '' + }; + }, + methods: { + set_page: function set_page(pageName) { + this.$store.state.page_name = pageName; + this.loadPage(); + }, + logout: function logout() { + var _this = this; + + console.log("logging out with token " + this.$store.state.user_token); // Empty brackets are an empty object usually containing form data + + axios.post('http://localhost:8000/api/v1/auth/logout', {}, { + headers: { + 'Authorization': 'Bearer ' + this.$store.state.user_token + } + }).then(function (res) { + console.log("Logout successful"); + _this.$store.state.user_token = null; + + _this.$router.go(); //Reload page with updated access-based display + + })["catch"](function (error) { + console.log("Logout unsuccessful."); + console.log(error); + }); + }, + editPage: function editPage() { + this.$router.push('/edit_page'); + }, + loadPage: function loadPage(page_name) { + var _this2 = this; + + console.log("loadPage: " + page_name); + this.$store.state.page_name = page_name; + axios.post('http://localhost:8000/api/v1/load_page', { + page: page_name + }, { + headers: { + 'Authorization': 'Bearer ' + this.$store.state.user_token + } + }).then(function (res) { + console.log("Body:"); + console.log(res.data.body); + _this2.$store.state.page_content = res.data.body; + }); + }, + loadUserList: function loadUserList() { + var _this3 = this; + + // Empty brackets are an empty object usually containing form data + axios.post('http://localhost:8000/api/v1/auth/get_userlist', {}, { + headers: { + 'Authorization': 'Bearer ' + this.$store.state.user_token + } + }).then(function (res) { + console.log("Userlist successfully loaded."); + _this3.$store.state.userlist = res.data; + console.log(res.data); + })["catch"](function (error) { + console.log("Loading of Userlist failed."); + console.log(error); + }); + } + }, + created: function created() { + this.loadUserList(); + } +}); + +/***/ }), + /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/auth/Login.vue?vue&type=script&lang=js&": /*!****************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/auth/Login.vue?vue&type=script&lang=js& ***! @@ -31118,7 +31252,14 @@ var render = function() { ? _c("span", [ _c( "button", - { staticClass: "button", on: { click: function($event) {} } }, + { + staticClass: "button", + on: { + click: function($event) { + return _vm.userlistPage() + } + } + }, [_vm._v("Userverwaltung")] ) ]) @@ -31231,6 +31372,206 @@ render._withStripped = true +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/UserList.vue?vue&type=template&id=6d878aa8&": +/*!******************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/UserList.vue?vue&type=template&id=6d878aa8& ***! + \******************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("div", { attrs: { id: "root" } }, [ + _c("div", { staticClass: "title level-item has-text-centered" }, [ + _vm._v("Motorrad IG (Userlist)\n ") + ]), + _vm._v(" "), + _c("div", { staticClass: "has-text-centered" }, [ + _c( + "button", + { + staticClass: "button", + on: { + click: function($event) { + return _vm.loadPage("ueber_uns") + } + } + }, + [_vm._v("Über uns")] + ), + _vm._v(" "), + _c( + "button", + { + staticClass: "button", + on: { + click: function($event) { + return _vm.loadPage("aktuelles") + } + } + }, + [_vm._v("Aktuelles")] + ), + _vm._v(" "), + _c( + "button", + { staticClass: "button", on: { click: function($event) {} } }, + [_vm._v("Mitgliedsantrag")] + ), + _vm._v(" "), + !this.$store.state.user.hasOwnProperty("role") + ? _c("span", [ + _c( + "button", + { staticClass: "button", on: { click: function($event) {} } }, + [_vm._v("Tourplan (Beispiel)")] + ) + ]) + : this.$store.state.user.role === "GUEST" + ? _c("span", [ + _c( + "button", + { staticClass: "button", on: { click: function($event) {} } }, + [_vm._v("Tourplan (Gast)")] + ) + ]) + : this.$store.state.user.role === "MEMBER" + ? _c("span", [ + _c( + "button", + { staticClass: "button", on: { click: function($event) {} } }, + [_vm._v("Tourplan (komplett)")] + ) + ]) + : this.$store.state.user.role === "ADMIN" + ? _c("span", [ + _c( + "button", + { staticClass: "button", on: { click: function($event) {} } }, + [_vm._v("Tourplan (komplett)")] + ) + ]) + : _vm._e(), + _vm._v(" "), + this.$store.state.user.role === "ADMIN" + ? _c("span", [ + _c( + "button", + { + staticClass: "button", + on: { + click: function($event) { + return _vm.loadPage("userlist") + } + } + }, + [_vm._v("Userverwaltung")] + ) + ]) + : _vm._e(), + _vm._v(" "), + _c( + "button", + { staticClass: "button", on: { click: function($event) {} } }, + [_vm._v("Wetter")] + ), + _vm._v(" "), + _c( + "button", + { + staticClass: "button", + on: { + click: function($event) { + return _vm.loadPage("links") + } + } + }, + [_vm._v("Links")] + ), + _vm._v(" "), + _c( + "button", + { + staticClass: "button", + on: { + click: function($event) { + return _vm.loadPage("Impressum") + } + } + }, + [_vm._v("Impressum")] + ), + _vm._v(" "), + this.$store.state.user.hasOwnProperty("role") + ? _c("span", [ + _c( + "button", + { + staticClass: "button", + on: { + click: function($event) { + return _vm.logout() + } + } + }, + [_vm._v("Logout")] + ) + ]) + : _vm._e(), + _vm._v(" "), + !this.$store.state.user.hasOwnProperty("role") + ? _c( + "span", + [ + _c( + "router-link", + { staticClass: "button", attrs: { to: { name: "Login" } } }, + [_vm._v("Log-In")] + ) + ], + 1 + ) + : _vm._e() + ]), + _vm._v(" "), + _c("p", [_vm._v(" ")]), + _vm._v(" "), + _c("div", { staticStyle: { "text-align": "center" } }, [ + _c( + "ul", + _vm._l(this.$store.state.userlist, function(user) { + return _c("li", [ + _vm._v( + _vm._s(user.name) + + " (" + + _vm._s(user.role) + + ")\n " + ), + _c("button", [_vm._v("Gast")]), + _vm._v(" "), + _c("button", [_vm._v("Mitglied")]), + _vm._v(" "), + _c("button", [_vm._v("Administrator")]) + ]) + }), + 0 + ) + ]) + ]) +} +var staticRenderFns = [] +render._withStripped = true + + + /***/ }), /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/auth/Login.vue?vue&type=template&id=46ec553e&": @@ -47919,9 +48260,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _views_auth_Register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./views/auth/Register */ "./resources/js/views/auth/Register.vue"); /* harmony import */ var _views_Main__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./views/Main */ "./resources/js/views/Main.vue"); /* harmony import */ var _views_EditPage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views/EditPage */ "./resources/js/views/EditPage.vue"); -/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.common.js"); -/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-router */ "./node_modules/vue-router/dist/vue-router.esm.js"); +/* harmony import */ var _views_UserList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./views/UserList */ "./resources/js/views/UserList.vue"); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.common.js"); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-router */ "./node_modules/vue-router/dist/vue-router.esm.js"); + @@ -47944,8 +48287,12 @@ var routes = [{ path: '/edit_page', name: 'edit_page', component: _views_EditPage__WEBPACK_IMPORTED_MODULE_3__["default"] +}, { + path: '/userlist', + name: 'userlist', + component: _views_UserList__WEBPACK_IMPORTED_MODULE_4__["default"] }]; -vue__WEBPACK_IMPORTED_MODULE_4___default.a.use(vue_router__WEBPACK_IMPORTED_MODULE_5__["default"]); +vue__WEBPACK_IMPORTED_MODULE_5___default.a.use(vue_router__WEBPACK_IMPORTED_MODULE_6__["default"]); /***/ }), @@ -47970,7 +48317,8 @@ var store = new vuex__WEBPACK_IMPORTED_MODULE_1__["default"].Store({ user: {}, user_token: {}, page_name: 'main', - page_content: '

Placeholder

' + page_content: '

Placeholder

', + userlist: {} } }); @@ -48112,6 +48460,75 @@ __webpack_require__.r(__webpack_exports__); +/***/ }), + +/***/ "./resources/js/views/UserList.vue": +/*!*****************************************!*\ + !*** ./resources/js/views/UserList.vue ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _UserList_vue_vue_type_template_id_6d878aa8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UserList.vue?vue&type=template&id=6d878aa8& */ "./resources/js/views/UserList.vue?vue&type=template&id=6d878aa8&"); +/* harmony import */ var _UserList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserList.vue?vue&type=script&lang=js& */ "./resources/js/views/UserList.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _UserList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _UserList_vue_vue_type_template_id_6d878aa8___WEBPACK_IMPORTED_MODULE_0__["render"], + _UserList_vue_vue_type_template_id_6d878aa8___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/views/UserList.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./resources/js/views/UserList.vue?vue&type=script&lang=js&": +/*!******************************************************************!*\ + !*** ./resources/js/views/UserList.vue?vue&type=script&lang=js& ***! + \******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--4-0!../../../node_modules/vue-loader/lib??vue-loader-options!./UserList.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/UserList.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./resources/js/views/UserList.vue?vue&type=template&id=6d878aa8&": +/*!************************************************************************!*\ + !*** ./resources/js/views/UserList.vue?vue&type=template&id=6d878aa8& ***! + \************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserList_vue_vue_type_template_id_6d878aa8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./UserList.vue?vue&type=template&id=6d878aa8& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/UserList.vue?vue&type=template&id=6d878aa8&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserList_vue_vue_type_template_id_6d878aa8___WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserList_vue_vue_type_template_id_6d878aa8___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + + + /***/ }), /***/ "./resources/js/views/auth/Login.vue": diff --git a/motorradig/resources/js/routes.js b/motorradig/resources/js/routes.js index 90b31b6..6c788ae 100644 --- a/motorradig/resources/js/routes.js +++ b/motorradig/resources/js/routes.js @@ -1,7 +1,8 @@ -import Login from "./views/auth/Login"; -import Register from "./views/auth/Register"; -import Main from "./views/Main"; +import Login from "./views/auth/Login"; +import Register from "./views/auth/Register"; +import Main from "./views/Main"; import EditPage from "./views/EditPage"; +import UserList from "./views/UserList"; import Vue from 'vue'; import VueRouter from "vue-router"; @@ -11,6 +12,7 @@ export const routes= [ { path:'/login', name : 'Login', component: Login }, { path:'/register', name : 'register', component: Register }, { path:'/edit_page', name : 'edit_page', component: EditPage }, + { path:'/userlist', name : 'userlist', component: UserList }, ]; Vue.use(VueRouter); diff --git a/motorradig/resources/js/store.js b/motorradig/resources/js/store.js index ab3a89e..68cd20c 100644 --- a/motorradig/resources/js/store.js +++ b/motorradig/resources/js/store.js @@ -7,6 +7,7 @@ export const store = new Vuex.Store({ user:{}, user_token:{}, page_name: 'main', - page_content:'

Placeholder

' + page_content:'

Placeholder

', + userlist:{} } }); diff --git a/motorradig/resources/js/views/Main.vue b/motorradig/resources/js/views/Main.vue index d82b6a7..1d1a16c 100644 Binary files a/motorradig/resources/js/views/Main.vue and b/motorradig/resources/js/views/Main.vue differ diff --git a/motorradig/resources/js/views/UserList.vue b/motorradig/resources/js/views/UserList.vue new file mode 100644 index 0000000..3c98ebf Binary files /dev/null and b/motorradig/resources/js/views/UserList.vue differ diff --git a/motorradig/routes/api.php b/motorradig/routes/api.php index 37f5588..1f31624 100644 --- a/motorradig/routes/api.php +++ b/motorradig/routes/api.php @@ -45,6 +45,7 @@ Route::prefix('v1')->group(function () { //Load Page Content Route::post('load_page', 'PageController@load_page'); + Route::post('get_userlist', 'AuthController@userlist'); }); }); });