Update auth
This commit is contained in:
111
src/auth.js
111
src/auth.js
@@ -1,58 +1,54 @@
|
||||
const defaultUser = {
|
||||
email: 'titan@hadiyan.net',
|
||||
avatarUrl: 'https://js.devexpress.com/Demos/WidgetsGallery/JSDemos/images/employees/06.png'
|
||||
};
|
||||
import * as Forge from 'node-forge'
|
||||
import axios from 'axios'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
export default {
|
||||
_user: defaultUser,
|
||||
_user: null,
|
||||
|
||||
loggedIn() {
|
||||
return !!this._user;
|
||||
let user = JSON.parse(window.localStorage.getItem('user'));
|
||||
let access_token = window.localStorage.getItem('access_token');
|
||||
|
||||
if (user && access_token) {
|
||||
axios.defaults.headers['authorization'] = `Bearer ${access_token}`;
|
||||
return !!user;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
async logIn(email, password) {
|
||||
try {
|
||||
// Send request
|
||||
console.log(email, password);
|
||||
// this._user = { ...defaultUser, email };
|
||||
|
||||
// return {
|
||||
// isOk: true,
|
||||
// data: this._user
|
||||
// };
|
||||
const response = await axios.post('authentication/login', {
|
||||
email,
|
||||
password: this.encrypt(password),
|
||||
});
|
||||
|
||||
const requestOptions = {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ email: email, password: password }),
|
||||
const data = response.data;
|
||||
|
||||
this._user = {
|
||||
username: data.data.username,
|
||||
email: data.data.email,
|
||||
role: data.data.role,
|
||||
avatarUrl: 'https://js.devexpress.com/Demos/WidgetsGallery/JSDemos/images/employees/06.png',
|
||||
};
|
||||
|
||||
const response = await fetch('http://localhost:9090/api/authentication/login', requestOptions);
|
||||
const data = await response.json();
|
||||
window.localStorage.setItem('user', JSON.stringify(this._user))
|
||||
window.localStorage.setItem('access_token', response.data.data.accessToken)
|
||||
window.localStorage.setItem('refresh_token', response.data.data.refreshToken)
|
||||
|
||||
console.log(data);
|
||||
//console.log(data.data.length);
|
||||
|
||||
// this._user = {
|
||||
// id: response.data.id,
|
||||
// email: response.data.role,
|
||||
// name: response.data.keterangan,
|
||||
// role_id: response.data.id,
|
||||
// };
|
||||
|
||||
if(data.status == 'sukses') {
|
||||
const defaultUser = {
|
||||
email: data.data.email,
|
||||
avatarUrl: 'https://js.devexpress.com/Demos/WidgetsGallery/JSDemos/images/employees/06.png',
|
||||
name: data.data.name,
|
||||
};
|
||||
this._user = { ...defaultUser };
|
||||
axios.defaults.headers['authorization'] = `Bearer ${response.data.data.accessToken}`;
|
||||
|
||||
if (response.status === 200) {
|
||||
return {
|
||||
isOk: true,
|
||||
data: this._user
|
||||
};
|
||||
} else {
|
||||
//--- jika gagal munculkan pesan gagal
|
||||
|
||||
return {
|
||||
isOk: false,
|
||||
message: "Authentication failed"
|
||||
@@ -70,16 +66,27 @@ export default {
|
||||
|
||||
async logOut() {
|
||||
this._user = null;
|
||||
window.localStorage.removeItem('user');
|
||||
window.localStorage.removeItem('access_token');
|
||||
window.localStorage.removeItem('refresh_token');
|
||||
await axios.post('authentication/logout')
|
||||
axios.defaults.headers['authorization'] = null;
|
||||
router.push({ name: 'login-form' })
|
||||
},
|
||||
|
||||
async getUser() {
|
||||
try {
|
||||
// Send request
|
||||
const user = JSON.parse(window.localStorage.getItem('user'));
|
||||
|
||||
if (user) {
|
||||
return {
|
||||
isOk: true,
|
||||
data: user,
|
||||
};
|
||||
}
|
||||
|
||||
throw new Error(`Could not find current logged in user.`);
|
||||
|
||||
return {
|
||||
isOk: true,
|
||||
data: this._user
|
||||
};
|
||||
}
|
||||
catch {
|
||||
return {
|
||||
@@ -137,5 +144,23 @@ export default {
|
||||
message: "Failed to create account"
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
encrypt(param) {
|
||||
|
||||
const publicKey = `-----BEGIN PUBLIC KEY-----
|
||||
${process.env.VUE_APP_PUBLIC_KEY}
|
||||
-----END PUBLIC KEY-----`
|
||||
|
||||
const rsa = Forge.pki.publicKeyFromPem(publicKey)
|
||||
|
||||
const encrypted = rsa.encrypt(param, 'RSA-OAEP', {
|
||||
md: Forge.md.sha256.create(),
|
||||
mgf1: {
|
||||
md: Forge.md.sha1.create(),
|
||||
},
|
||||
});
|
||||
|
||||
return btoa(encrypted)
|
||||
},
|
||||
};
|
||||
|
Reference in New Issue
Block a user