From 70ccaf34ef99e3569b581911cd0a529f82e37567 Mon Sep 17 00:00:00 2001 From: Paulo Vieira Date: Sat, 13 Jan 2018 18:27:23 +0000 Subject: [PATCH] last commit entrega final do projecto --- .../Controllers/Auth/RegisterController.php | 12 + .../Http/Controllers/UserControllerAPI.php | 6 + laravel_server/app/Mail/Mail.php | 33 +++ laravel_server/public/js/vueapp.js | 215 +++++++++--------- .../resources/assets/js/components/login.vue | 9 +- .../resources/assets/js/components/logout.vue | 8 +- .../assets/js/components/register.vue | 2 + .../resources/views/confirm.email.blade.php | 10 + .../resources/views/vue/index.blade.php | 7 +- 9 files changed, 186 insertions(+), 116 deletions(-) create mode 100644 laravel_server/app/Mail/Mail.php create mode 100644 laravel_server/resources/views/confirm.email.blade.php diff --git a/laravel_server/app/Http/Controllers/Auth/RegisterController.php b/laravel_server/app/Http/Controllers/Auth/RegisterController.php index 550b20a..2519a1a 100644 --- a/laravel_server/app/Http/Controllers/Auth/RegisterController.php +++ b/laravel_server/app/Http/Controllers/Auth/RegisterController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Auth; +use Mail; use App\User; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Validator; @@ -70,4 +71,15 @@ class RegisterController extends Controller 'username' => $data['email'] ]); } + + protected function sendEmail(Request $request) + { + $message = "Please click here to activate your account"; + + mail($request['email'], 'MemoryGame Activation Account', $message); + } + + + + } diff --git a/laravel_server/app/Http/Controllers/UserControllerAPI.php b/laravel_server/app/Http/Controllers/UserControllerAPI.php index 2fd1f21..c2b294e 100644 --- a/laravel_server/app/Http/Controllers/UserControllerAPI.php +++ b/laravel_server/app/Http/Controllers/UserControllerAPI.php @@ -8,6 +8,7 @@ use Illuminate\Contracts\Support\Jsonable; use App\Http\Resources\User as UserResource; use Illuminate\Support\Facades\DB; +use App\Mail\Mail; use App\User; use App\StoreUserRequest; use Hash; @@ -40,6 +41,11 @@ class UserControllerAPI extends Controller $user->fill($request->all()); $user->password = Hash::make($user->password); $user->save(); + + auth()->login($user); + + \Mail::to($user)->send(new Mail); + return response()->json(new UserResource($user), 201); } diff --git a/laravel_server/app/Mail/Mail.php b/laravel_server/app/Mail/Mail.php new file mode 100644 index 0000000..6d6037f --- /dev/null +++ b/laravel_server/app/Mail/Mail.php @@ -0,0 +1,33 @@ +view('confirm.email'); + } +} diff --git a/laravel_server/public/js/vueapp.js b/laravel_server/public/js/vueapp.js index af7845d..e65627c 100644 --- a/laravel_server/public/js/vueapp.js +++ b/laravel_server/public/js/vueapp.js @@ -1409,9 +1409,9 @@ Vue.use(__WEBPACK_IMPORTED_MODULE_1_vue_socket_io___default.a, 'http://192.168.1 var user = Vue.component('user', __webpack_require__(43)); var login = Vue.component('login', __webpack_require__(59)); var logout = Vue.component('logout', __webpack_require__(62)); -var register = Vue.component('register', __webpack_require__(67)); -var singleplayer_game = Vue.component('singlegame', __webpack_require__(70)); -var multiplayerGame = Vue.component('multiplayergame', __webpack_require__(75)); +var register = Vue.component('register', __webpack_require__(66)); +var singleplayer_game = Vue.component('singlegame', __webpack_require__(69)); +var multiplayerGame = Vue.component('multiplayergame', __webpack_require__(74)); var routes = [{ path: '/', redirect: '/users' }, { path: '/users', component: user }, { path: '/login', component: login }, { path: '/logout', component: logout }, { path: '/register', component: register }, { path: '/singletictactoe', component: singleplayer_game }, { path: '/multitictactoe', component: multiplayerGame }]; @@ -46770,13 +46770,16 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); headers: { 'Content-Type': 'application/json' } }).then(function (response) { // buscar o token do user logado - console.log('Response: ' + response); + console.log('Response: '); + console.log(response); var token = response.data.access_token; // guardar na localStorage o token - localStorage.setItem('token', token); + localStorage.setItem('token', JSON.stringify(token)); // user já se encontra logado e com a sessão guardada _this.$router.push('/'); + app.$forceUpdate(); + console.log("after update view"); }).catch(function (loginError) { // Something went wrong! console.log('Login Error: ' + loginError); @@ -46922,7 +46925,7 @@ var normalizeComponent = __webpack_require__(1) /* script */ var __vue_script__ = __webpack_require__(65) /* template */ -var __vue_template__ = __webpack_require__(66) +var __vue_template__ = __webpack_require__(89) /* template functional */ var __vue_template_functional__ = false /* styles */ @@ -47043,15 +47046,15 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); var head = { headers: { - 'Authorization': 'Bearer ' + window.localStorage.getItem('token'), + 'Authorization': 'Bearer ' + JSON.parse(localStorage.getItem('token')), 'Accept': 'application/json' } }; axios.post('/api/logout', null, head).then(function (response) { if (response.status == 200) { - window.localStorage.removeItem('token'); - console.log("Token removed"); + window.localStorage.clear(); + console.log("logout sucessfull"); _this.$router.push('/login'); } }).catch(function (error) { @@ -47065,66 +47068,12 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* 66 */ /***/ (function(module, exports, __webpack_require__) { -var render = function() { - var _vm = this - var _h = _vm.$createElement - var _c = _vm._self._c || _h - return _c("div", { staticClass: "container" }, [ - _c("div", { staticClass: "row" }, [ - _c("div", { staticClass: "col-md-8 col-md-offset-2" }, [ - _c("h1", [_vm._v("Logout")]), - _vm._v(" "), - _c("p", [_c("em", [_vm._v(_vm._s(_vm.message))])]), - _vm._v(" "), - _c( - "div", - { staticClass: "text-left" }, - [ - _c( - "button", - { - staticClass: "btn btn-primary", - on: { - click: function($event) { - _vm.logout() - } - } - }, - [_vm._v("Logout")] - ), - _vm._v(" "), - _c( - "router-link", - { staticClass: "btn btn-default", attrs: { to: "/users" } }, - [_vm._v("Cancel")] - ) - ], - 1 - ) - ]) - ]) - ]) -} -var staticRenderFns = [] -render._withStripped = true -module.exports = { render: render, staticRenderFns: staticRenderFns } -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api") .rerender("data-v-12a7f961", module.exports) - } -} - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - var disposed = false var normalizeComponent = __webpack_require__(1) /* script */ -var __vue_script__ = __webpack_require__(68) +var __vue_script__ = __webpack_require__(67) /* template */ -var __vue_template__ = __webpack_require__(69) +var __vue_template__ = __webpack_require__(68) /* template functional */ var __vue_template_functional__ = false /* styles */ @@ -47164,7 +47113,7 @@ module.exports = Component.exports /***/ }), -/* 68 */ +/* 67 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -47203,6 +47152,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); // // // +// /* harmony default export */ __webpack_exports__["default"] = ({ @@ -47228,6 +47178,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); name: this.user.name, username: this.user.email }).then(function (response) { + // enviar email de autenticação console.log(response); _this.$router.push('/'); }).catch(function (registerError) { @@ -47241,7 +47192,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); }); /***/ }), -/* 69 */ +/* 68 */ /***/ (function(module, exports, __webpack_require__) { var render = function() { @@ -47386,19 +47337,19 @@ if (false) { } /***/ }), -/* 70 */ +/* 69 */ /***/ (function(module, exports, __webpack_require__) { var disposed = false function injectStyle (ssrContext) { if (disposed) return - __webpack_require__(71) + __webpack_require__(70) } var normalizeComponent = __webpack_require__(1) /* script */ -var __vue_script__ = __webpack_require__(73) +var __vue_script__ = __webpack_require__(72) /* template */ -var __vue_template__ = __webpack_require__(74) +var __vue_template__ = __webpack_require__(73) /* template functional */ var __vue_template_functional__ = false /* styles */ @@ -47437,13 +47388,13 @@ module.exports = Component.exports /***/ }), -/* 71 */ +/* 70 */ /***/ (function(module, exports, __webpack_require__) { // style-loader: Adds some css to the DOM by adding a