Skip to content

Commit 712db80

Browse files
committed
Iniciando SPA
1 parent 8f2af86 commit 712db80

18 files changed

+297
-77
lines changed

composer.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
"type": "project",
77
"require": {
88
"php": ">=5.6.4",
9-
"laravel/framework": "5.3.*"
9+
"laravel/framework": "5.3.18",
10+
"tymon/jwt-auth": "dev-develop",
11+
"barryvdh/laravel-cors": "^0.8.5"
1012
},
1113
"require-dev": {
1214
"fzaninotto/faker": "~1.4",

composer.lock

+121-63
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/app.php

+2
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@
167167
* Package Service Providers...
168168
*/
169169
Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
170+
Barryvdh\Cors\ServiceProvider::class,
171+
170172
//
171173

172174
/*

config/cors.php

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
return [
4+
/*
5+
|--------------------------------------------------------------------------
6+
| Laravel CORS
7+
|--------------------------------------------------------------------------
8+
|
9+
| allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
10+
| to accept any value.
11+
|
12+
*/
13+
'supportsCredentials' => false,
14+
'allowedOrigins' => ['*'],
15+
'allowedHeaders' => ['*'],
16+
'allowedMethods' => ['*'],
17+
'exposedHeaders' => [],
18+
'maxAge' => 0,
19+
'hosts' => [],
20+
];
21+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<template>
2+
<div class="container">
3+
<div class="row">
4+
<div class="col-md-8 col-md-offset-2">
5+
<div class="panel-heading">Meu Dashboard</div>
6+
<div class="panel-body">
7+
Meu conteúdo
8+
</div>
9+
</div>
10+
</div>
11+
</div>
12+
</template>
13+
<script>
14+
export default{
15+
}
16+
</script>

resources/assets/spa/js/components/Login.vue

+31-3
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,27 @@
44
<div class="col s8 offset-s2 z-depth-2">
55
<h3 class="center">Code Financeiro</h3>
66

7+
<div class="row" v-if="error.error">
8+
<div class="col s12">
9+
<div class="card-panel red">
10+
<span class="white-text">{{error.message}}</span>
11+
</div>
12+
</div>
13+
</div>
14+
715
<form method="POST" @submit.prevent="login()">
816
<div class="row">
917
<div class="input-field col s12">
10-
<input id="email" type="email" class="validate" name="email" v-model="user.email" required autofocus>
18+
<input id="email" type="email" class="validate" name="email" v-model="user.email" required
19+
autofocus>
1120
<label for="email" class="active">E-Mail</label>
1221
</div>
1322
</div>
1423

1524
<div class="row">
1625
<div class="input-field col s12">
17-
<input id="password" type="password" class="validate" name="password" v-model="user.password" required>
26+
<input id="password" type="password" class="validate" name="password"
27+
v-model="user.password" required>
1828
<label for="password" class="active">Senha</label>
1929
</div>
2030
</div>
@@ -30,18 +40,36 @@
3040
</div>
3141
</template>
3242
<script type="text/javascript">
43+
import Auth from "../services/auth";
3344
export default{
3445
data(){
3546
return {
3647
user: {
3748
email: '',
3849
password: ''
50+
},
51+
error: {
52+
error: false,
53+
message: ''
3954
}
4055
}
4156
},
4257
methods: {
4358
login(){
44-
59+
Auth.login(this.user.email, this.user.password)
60+
.then(()=> {
61+
this.$router.go({name: 'dashboard'});
62+
})
63+
.catch((responseError) => {
64+
switch(responseError.status){
65+
case 401:
66+
this.error.message = responseError.data.message;
67+
break;
68+
default:
69+
this.error.message = "Login failed.";
70+
}
71+
this.error.error = true;
72+
});
4573
}
4674
}
4775
}

resources/assets/spa/js/router.map.js

+5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import LoginComponent from './components/Login.vue';
2+
import DashboardComponent from './components/Dashboard.vue';
23

34
export default{
45
'/login': {
56
name: 'auth.login',
67
component: LoginComponent
8+
},
9+
'/dashboard': {
10+
name: 'dashboard',
11+
component: DashboardComponent
712
}
813
}

resources/assets/spa/js/services/auth-compiled.js

+24
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/assets/spa/js/services/auth-compiled.js.map

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import {Jwt} from "./resources";
2+
import LocalStorage from "./localStorage";
3+
4+
export default {
5+
login(email,password){
6+
return Jwt.accessToken(email, password).then((response)=>{
7+
LocalStorage.set('token',response.data.token);
8+
return response;
9+
});
10+
}
11+
}

resources/assets/spa/js/services/localStorage-compiled.js

+23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/assets/spa/js/services/localStorage-compiled.js.map

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
export default {
2+
set(key, value){
3+
window.localStorage[key] = value;
4+
return window.localStorage[key];
5+
},
6+
get(key, defaultValue = null){
7+
return window.localStorage[key] || defaultValue;
8+
},
9+
setObject(key, value){
10+
window.localStorage[key] = JSON.stringify(value);
11+
return this.getObjetct(key);
12+
},
13+
getObjetct(key){
14+
return JSON.parse(window.localStorage[key] || null);
15+
},
16+
remove(key){
17+
window.localStorage.removeItem(key);
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export class Jwt{
2+
static accessToken(email, password){
3+
return Vue.http.post('access_token',{
4+
'email': email,
5+
'password': password
6+
});
7+
}
8+
}

resources/assets/spa/js/spa-compiled.js

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/assets/spa/js/spa-compiled.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/assets/spa/js/spa.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require('materialize-css');
22
window.Vue = require('vue');
3-
require('./router');
4-
3+
require('vue-resource');
4+
Vue.http.options.root = "http://localhost:8000/api";
5+
require('./router');

routes/api.php

+5-7
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@
1313
|
1414
*/
1515

16-
Route::get('/user', function (Request $request) {
17-
return $request->user();
18-
})->middleware('auth:api');
19-
20-
Route::post('access_token','Api\AuthController@accessToken');
21-
Route::post('refresh_token','Api\AuthController@refreshToken');
22-
Route::post('logout','Api\AuthController@logout')->middleware('auth:api');
16+
Route::group(['middleware' => 'cors'],function(){
17+
Route::post('access_token','Api\AuthController@accessToken');
18+
Route::post('refresh_token','Api\AuthController@refreshToken');
19+
Route::post('logout','Api\AuthController@logout')->middleware('auth:api');
20+
});

0 commit comments

Comments
 (0)