Skip to content

Commit 7f6160a

Browse files
committed
Big Bang í² �
1 parent 1dd4546 commit 7f6160a

File tree

12 files changed

+367
-32
lines changed

12 files changed

+367
-32
lines changed

.env

Whitespace-only changes.

src/App.vue

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,6 @@
99
</template>
1010

1111
<style lang="scss">
12-
#app {
13-
font-family: Avenir, Helvetica, Arial, sans-serif;
14-
-webkit-font-smoothing: antialiased;
15-
-moz-osx-font-smoothing: grayscale;
16-
text-align: center;
17-
color: #2c3e50;
18-
}
1912
20-
#nav {
21-
padding: 30px;
22-
23-
a {
24-
font-weight: bold;
25-
color: #2c3e50;
26-
27-
&.router-link-exact-active {
28-
color: #42b983;
29-
}
30-
}
31-
}
13+
3214
</style>

src/_helpers/base.service.js

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
// import {authHeader} from '@/_helpers/auth-header'
2+
import queryString from 'querystring'
3+
4+
class RequestService {
5+
token;
6+
base_url;
7+
8+
constructor() {
9+
// const user = JSON.parse(localStorage.getItem('user'));
10+
}
11+
12+
get(path, parameters, customHeaders = {}) {
13+
const params = queryString.stringify(parameters);
14+
const target = path + '?' + params;
15+
let requestOptions = {
16+
method: 'GET',
17+
headers: this.authHeader()
18+
};
19+
// console.log("requestOptions=>",requestOptions)
20+
21+
//Si manda custom header lo reemplazo
22+
if (Object.keys(customHeaders).length) requestOptions.headers = customHeaders;
23+
24+
return this.request('get', target, requestOptions);
25+
}
26+
27+
post(path, data, customHeaders = {}) {
28+
const target = path;
29+
let requestOptions = {
30+
method: 'POST',
31+
headers: this.authHeader(),
32+
body: JSON.stringify(data)
33+
};
34+
console.log(data);
35+
console.log("requestOptions=>", requestOptions);
36+
//console.log("requestOptions=>",requestOptions)
37+
// console.log(this.authHeader());
38+
//Si manda custom header lo reemplazo
39+
if (Object.keys(customHeaders).length) requestOptions.headers = customHeaders;
40+
return this.request('post', target, requestOptions);
41+
}
42+
43+
delete(path, data, customHeaders = {}) {
44+
const target = path;
45+
let requestOptions = {
46+
method: 'delete',
47+
headers: this.authHeader(),
48+
body: JSON.stringify(data)
49+
};
50+
console.log(data);
51+
console.log("requestOptions=>", requestOptions);
52+
//console.log("requestOptions=>",requestOptions)
53+
// console.log(this.authHeader());
54+
//Si manda custom header lo reemplazo
55+
if (Object.keys(customHeaders).length) requestOptions.headers = customHeaders;
56+
return this.request('delete', target, requestOptions);
57+
}
58+
59+
put(path, data, customHeaders = {}) {
60+
const target = path;
61+
let requestOptions = {
62+
method: 'PUT',
63+
headers: this.authHeader(),
64+
body: JSON.stringify(data)
65+
};
66+
console.log(data);
67+
console.log("requestOptions=>", requestOptions);
68+
//console.log("requestOptions=>",requestOptions)
69+
// console.log(this.authHeader());
70+
//Si manda custom header lo reemplazo
71+
if (Object.keys(customHeaders).length) requestOptions.headers = customHeaders;
72+
return this.request('put', target, requestOptions);
73+
}
74+
75+
patch() {
76+
77+
}
78+
79+
authHeader() {
80+
// return authorization header with jwt token;
81+
if (this.token) {
82+
return {
83+
Accept: 'application/json',
84+
'Content-Type': 'application/json',
85+
'Authorization': 'Bearer ' + this.token,
86+
};
87+
} else {
88+
return {
89+
'Authorization': '',
90+
'Content-Type': 'application/json'
91+
};
92+
}
93+
}
94+
95+
request(method, path, options) {
96+
const target = this.base_url + path;
97+
return fetch(target, options)
98+
.then((response) => response.json())
99+
.then((responseJson) => {
100+
if (responseJson.success) {
101+
return responseJson
102+
} else {
103+
return this.handleError(responseJson)
104+
}
105+
})
106+
.catch((error) => {
107+
console.log('CATCHED ERROR EN REQUEST');
108+
console.log(error);
109+
return error
110+
})
111+
}
112+
113+
handleResponse(response) {
114+
console.log('ENTRÓ A RESPONSE');
115+
console.log(response.json());
116+
return response.json();
117+
// return response.then(text => {
118+
// const data = text && JSON.parse(text);
119+
// if (!response.ok) {
120+
// if (response.status !== 200 || response.status !== 202) {
121+
// // logout();
122+
// // location.reload(true);
123+
// }
124+
// if (response.status === 403) { //Status 403 significa que el token venció
125+
// this.logout();
126+
// }
127+
// const error = (data && data.message) || response.statusText;
128+
// return Promise.reject(error);
129+
// }
130+
// return data;
131+
// });
132+
}
133+
134+
handleError(response) {
135+
if (response.code === 401) {
136+
window.location.href = '/login'
137+
}
138+
return response
139+
}
140+
141+
logout() {
142+
// eslint-disable-next-line no-console
143+
console.log('LOGOUT')
144+
}
145+
146+
setToken(token) {
147+
token = token.replace('"', '');
148+
this.token = token;
149+
}
150+
151+
setupClient(base_url) {
152+
this.base_url = base_url;
153+
}
154+
}
155+
156+
export const requestService = new RequestService();

src/_helpers/router.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import Vue from 'vue'
2+
import Router from 'vue-router'
3+
import Home from '../views/Home'
4+
import Login from '../views/Auth/Login'
5+
6+
Vue.use(Router);
7+
8+
export const router = new Router({
9+
mode: 'history',
10+
routes: [
11+
{
12+
path: '/',
13+
name: 'home',
14+
component: Home
15+
},
16+
{
17+
path: '/login',
18+
name: 'login',
19+
component: Login
20+
},
21+
{path: '*', redirect: '/'}
22+
]
23+
});
24+
25+
router.beforeEach((to, from, next) => {
26+
const publicPages = ['/login'];
27+
const authRequired = !publicPages.includes(to.path);
28+
const loggedIn = localStorage.getItem('user');
29+
if (authRequired && !loggedIn) {
30+
return next('/login');
31+
} else {
32+
next();
33+
}
34+
});

src/_modules/account.module.js

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import {userService} from '../_services';
2+
import {router} from '../_helpers/router';
3+
import {requestService} from "../_helpers/base.service";
4+
const user = localStorage.getItem('user');
5+
6+
const state = {
7+
status: {},
8+
user: JSON.parse(user),
9+
afterLogin: null
10+
};
11+
12+
const actions = {
13+
async login({commit}, {email, password}) {
14+
commit('loginRequest', {email});
15+
const user = await userService.login(email, password);
16+
if(user.success) {
17+
commit('loginSuccess', user.data);
18+
await router.push('/');
19+
location.reload();
20+
} else {
21+
commit('loginError', user.data);
22+
}
23+
return user.data;
24+
25+
},
26+
logout({commit}) {
27+
userService.logout();
28+
commit('logout');
29+
},
30+
register({dispatch, commit}, user) {
31+
commit('registerRequest', user);
32+
33+
userService.register(user)
34+
.then(
35+
user => {
36+
commit('registerSuccess', user);
37+
router.push('/login');
38+
setTimeout(() => {
39+
// display success message after route change completes
40+
dispatch('alert/success', 'Registration successful', {root: true});
41+
})
42+
},
43+
error => {
44+
commit('registerFailure', error);
45+
dispatch('alert/error', error, {root: true});
46+
}
47+
);
48+
},
49+
// async getUserSession({commit}) {
50+
// // const user = await userService.getUserSession();
51+
// // console.log(user);
52+
// // commit('loginSuccess', user);
53+
// // return user;
54+
// }
55+
};
56+
57+
const mutations = {
58+
loginRequest(state, user) {
59+
state.status = {loggingIn: true};
60+
state.user = user;
61+
},
62+
loginSuccess(state, user) {
63+
if (user.access_token) {
64+
state.status = {loggedIn: true};
65+
localStorage.setItem('user', JSON.stringify(user));
66+
requestService.setToken(user.access_token);
67+
state.user = user;
68+
}
69+
},
70+
logout(state) {
71+
state.status = {};
72+
state.user = null;
73+
},
74+
registerRequest(state) {
75+
state.status = {registering: true};
76+
},
77+
registerSuccess(state) {
78+
state.status = {};
79+
},
80+
registerFailure(state) {
81+
state.status = {};
82+
}
83+
};
84+
85+
export const account = {
86+
namespaced: true,
87+
state,
88+
actions,
89+
mutations
90+
};

src/_modules/index.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import Vue from 'vue';
2+
import Vuex from 'vuex';
3+
4+
import {account} from './account.module';
5+
6+
Vue.use(Vuex);
7+
8+
export const store = new Vuex.Store({
9+
modules: {
10+
account
11+
}
12+
});

src/_services/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './user.service';

src/_services/user.service.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {requestService} from '@/_helpers/base.service';
2+
3+
export const userService = {
4+
login,
5+
getUserSession,
6+
logout,
7+
};
8+
9+
function login(email, password) {
10+
return requestService.post('/oauth/login', {email: email, password: password});
11+
}
12+
13+
function getUserSession() {
14+
return requestService.get('/user');
15+
}
16+
17+
function logout() {
18+
localStorage.removeItem('user');
19+
}

src/main.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
import Vue from 'vue'
22
import App from './App.vue'
3-
import router from './router'
4-
import store from './store'
3+
import {router} from './_helpers/router'
4+
import {requestService} from './_helpers/base.service';
5+
import {store} from './_modules'
56

6-
Vue.config.productionTip = false
7+
requestService.setupClient(process.env.VUE_APP_BASE_URL);
8+
const token = JSON.parse(localStorage.getItem('user') ? localStorage.getItem('user') : null);
9+
requestService.setToken(token ? token.access_token : '');
10+
11+
Vue.config.productionTip = false;
712

813
new Vue({
914
router,
1015
store,
1116
render: h => h(App)
12-
}).$mount('#app')
17+
}).$mount('#app');

src/views/About.vue

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)