Userlist Fetching & rudimentary display

This commit is contained in:
tschneider 2020-02-02 15:58:30 +01:00
parent c4ab608d76
commit e38d8e3a88
8 changed files with 452 additions and 21 deletions

View file

@ -2,11 +2,14 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="eed7de89-f054-487c-bf59-36356758942b" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/resources/js/views/UserList.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2020_01_28_072844_create_pagecontents_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2020_01_28_072844_create_pagecontents_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/AuthController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/AuthController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/js/app.js" beforeDir="false" afterPath="$PROJECT_DIR$/public/js/app.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/views/EditPage.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/views/EditPage.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/routes.js" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/routes.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/store.js" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/store.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/views/Main.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/views/Main.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/routes/api.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/api.php" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -140,7 +143,7 @@
<property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/resources/js" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/resources/js/views" />
<property name="node.js.detected.package.eslint" value="true" />
<property name="node.js.detected.package.tslint" value="true" />
<property name="node.js.path.for.package.eslint" value="project" />
@ -151,16 +154,16 @@
<property name="settings.editor.selected.configurable" value="terminal" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views" />
<recent name="$PROJECT_DIR$/public" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\repos\motorradig\motorradig\resources\js\views" />
<recent name="D:\repos\motorradig\motorradig\resources\js" />
<recent name="$PROJECT_DIR$/resources/js/views" />
<recent name="$PROJECT_DIR$/app/Http/Controllers" />
<recent name="$PROJECT_DIR$/resources/js" />
<recent name="$PROJECT_DIR$/resources/js/vue" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views" />
<recent name="$PROJECT_DIR$/public" />
</key>
</component>
<component name="RunManager" selected="Node.js.app.js">
@ -229,7 +232,8 @@
<workItem from="1580370378793" duration="3758000" />
<workItem from="1580461236383" duration="4110000" />
<workItem from="1580563491409" duration="793000" />
<workItem from="1580564326421" duration="2122000" />
<workItem from="1580564326421" duration="3051000" />
<workItem from="1580650898570" duration="4078000" />
</task>
<servers />
</component>
@ -265,10 +269,10 @@
<screen x="1280" y="23" width="1920" height="1057" />
</state>
<state x="1280" y="23" width="1720" height="857" maximized="true" key="com.intellij.history.integration.ui.views.FileHistoryDialog/0.23.1280.777/1280.23.1920.1057@1280.23.1920.1057" timestamp="1580282545601" />
<state x="655" y="365" key="com.intellij.ide.util.TipDialog" timestamp="1580564338333">
<state x="655" y="365" key="com.intellij.ide.util.TipDialog" timestamp="1580650911688">
<screen x="0" y="0" width="1920" height="1080" />
</state>
<state x="655" y="365" key="com.intellij.ide.util.TipDialog/0.0.1920.1080@0.0.1920.1080" timestamp="1580564338333" />
<state x="655" y="365" key="com.intellij.ide.util.TipDialog/0.0.1920.1080@0.0.1920.1080" timestamp="1580650911688" />
<state x="623" y="178" width="673" height="724" key="find.popup" timestamp="1580465329892">
<screen x="0" y="0" width="1920" height="1080" />
</state>

View file

@ -74,6 +74,12 @@ class AuthController extends Controller {
]);
}
// Get list of all users
public function userlist() {
return User::all();
}
/**
* Refresh JWT token
*/

View file

@ -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: '<h1 style="font-align:center;">Placeholder</h1>'
page_content: '<h1 style="font-align:center;">Placeholder</h1>',
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":

View file

@ -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);

View file

@ -7,6 +7,7 @@ export const store = new Vuex.Store({
user:{},
user_token:{},
page_name: 'main',
page_content:'<h1 style="font-align:center;">Placeholder</h1>'
page_content:'<h1 style="font-align:center;">Placeholder</h1>',
userlist:{}
}
});

Binary file not shown.

View file

@ -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');
});
});
});