This commit is contained in:
@@ -1,24 +1,74 @@
|
||||
/*eslint-disable*/
|
||||
import ayconfig from "../utils/config";
|
||||
|
||||
function status(response) {
|
||||
if (response.status >= 200 && response.status < 300) {
|
||||
return Promise.resolve(response);
|
||||
} else {
|
||||
return Promise.reject(new Error(response.statusText));
|
||||
}
|
||||
}
|
||||
|
||||
function json(response) {
|
||||
var v = response.json();
|
||||
return v;
|
||||
}
|
||||
|
||||
export default {
|
||||
authenticate(login, password) {
|
||||
fetch(ayconfig.apiUrl + "/auth", {
|
||||
login: login,
|
||||
password: password
|
||||
})
|
||||
.then(function(response) {
|
||||
if (response.status != 200) {
|
||||
alert("Error: " + response.statusText);
|
||||
return;
|
||||
}
|
||||
// Handle response you get from the server
|
||||
response.json().then(function(data) {
|
||||
//set token in config here
|
||||
return data;
|
||||
});
|
||||
authenticate(login, password, cb) {
|
||||
fetch(ayconfig.apiUrl + "auth", {
|
||||
method: "post",
|
||||
mode: "cors",
|
||||
headers: {
|
||||
Accept: "application/json, text/plain, */*",
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
body: JSON.stringify({
|
||||
login: login,
|
||||
password: password
|
||||
})
|
||||
.catch(function(err) {
|
||||
alert("Fetch Error :-S", err);
|
||||
})
|
||||
.then(status)
|
||||
.then(json)
|
||||
.then(function(data) {
|
||||
console.log(
|
||||
"AUTH.JS::authenticate() -> Request succeeded with JSON response",
|
||||
data
|
||||
);
|
||||
cb(data);
|
||||
//return data;
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log("Request failed", error);
|
||||
cb(error); //sb cb(data,error or something)
|
||||
//return error;
|
||||
});
|
||||
},
|
||||
async authenticatepromise(login, password) {
|
||||
return fetch(ayconfig.apiUrl + "auth", {
|
||||
method: "post",
|
||||
mode: "cors",
|
||||
headers: {
|
||||
Accept: "application/json, text/plain, */*",
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
body: JSON.stringify({
|
||||
login: login,
|
||||
password: password
|
||||
})
|
||||
})
|
||||
.then(status)
|
||||
.then(json)
|
||||
.then(function(data) {
|
||||
console.log(
|
||||
"AUTH.JS::authenticatepromise() -> Request succeeded with JSON response",
|
||||
data
|
||||
);
|
||||
return data;
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log("Request failed", error);
|
||||
return error;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import Vue from "vue";
|
||||
import Router from "vue-router";
|
||||
import Home from "./views/Home.vue";
|
||||
import { isLoggedIn, login, logout } from './utils/auth';
|
||||
//import { isLoggedIn, login, logout } from "./utils/auth";
|
||||
|
||||
Vue.use(Router);
|
||||
|
||||
@@ -9,30 +9,30 @@ export default new Router({
|
||||
mode: "history",
|
||||
base: process.env.BASE_URL,
|
||||
routes: [
|
||||
{
|
||||
path: "/",
|
||||
redirect: {
|
||||
name: "login"
|
||||
}
|
||||
},
|
||||
// {
|
||||
// path: "/",
|
||||
// redirect: {
|
||||
// name: "login"
|
||||
// }
|
||||
// },
|
||||
{
|
||||
path: "/login",
|
||||
name: "login",
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "login" */ "./views/login.vue")
|
||||
},
|
||||
{
|
||||
path: "/secure",
|
||||
name: "secure",
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "secure" */ "./views/secure.vue")
|
||||
},
|
||||
|
||||
// {
|
||||
// path: "/",
|
||||
// name: "home",
|
||||
// component: Home
|
||||
// path: "/secure",
|
||||
// name: "secure",
|
||||
// component: () =>
|
||||
// import(/* webpackChunkName: "secure" */ "./views/secure.vue")
|
||||
// },
|
||||
|
||||
{
|
||||
path: "/",
|
||||
name: "home",
|
||||
component: Home
|
||||
},
|
||||
{
|
||||
path: "/about",
|
||||
name: "about",
|
||||
@@ -45,34 +45,34 @@ export default new Router({
|
||||
]
|
||||
});
|
||||
|
||||
router.beforeEach((to, from, next) => {
|
||||
if(to.matched.some(record => record.meta.requiresAuth)) {
|
||||
if (localStorage.getItem('jwt') == null) {
|
||||
next({
|
||||
path: '/login',
|
||||
params: { nextUrl: to.fullPath }
|
||||
})
|
||||
} else {
|
||||
let user = JSON.parse(localStorage.getItem('user'))
|
||||
if(to.matched.some(record => record.meta.is_admin)) {
|
||||
if(user.is_admin == 1){
|
||||
next()
|
||||
}
|
||||
else{
|
||||
next({ name: 'userboard'})
|
||||
}
|
||||
}else {
|
||||
next()
|
||||
}
|
||||
}
|
||||
} else if(to.matched.some(record => record.meta.guest)) {
|
||||
if(localStorage.getItem('jwt') == null){
|
||||
next()
|
||||
}
|
||||
else{
|
||||
next({ name: 'userboard'})
|
||||
}
|
||||
}else {
|
||||
next()
|
||||
}
|
||||
})
|
||||
// Router.beforeEach((to, from, next) => {
|
||||
// if(to.matched.some(record => record.meta.requiresAuth)) {
|
||||
// if (localStorage.getItem('jwt') == null) {
|
||||
// next({
|
||||
// path: '/login',
|
||||
// params: { nextUrl: to.fullPath }
|
||||
// })
|
||||
// } else {
|
||||
// let user = JSON.parse(localStorage.getItem('user'))
|
||||
// if(to.matched.some(record => record.meta.is_admin)) {
|
||||
// if(user.is_admin == 1){
|
||||
// next()
|
||||
// }
|
||||
// else{
|
||||
// next({ name: 'userboard'})
|
||||
// }
|
||||
// }else {
|
||||
// next()
|
||||
// }
|
||||
// }
|
||||
// } else if(to.matched.some(record => record.meta.guest)) {
|
||||
// if(localStorage.getItem('jwt') == null){
|
||||
// next()
|
||||
// }
|
||||
// else{
|
||||
// next({ name: 'userboard'})
|
||||
// }
|
||||
// }else {
|
||||
// next()
|
||||
// }
|
||||
// })
|
||||
|
||||
@@ -3,20 +3,6 @@ import decode from "jwt-decode";
|
||||
//import auth0 from 'auth0-js';
|
||||
//import Router from 'vue-router';
|
||||
//import Auth0Lock from 'auth0-lock';
|
||||
const ID_TOKEN_KEY = "id_token";
|
||||
const ACCESS_TOKEN_KEY = "access_token";
|
||||
const USER_ROLES = AuthorizationRoles.NoRole;
|
||||
|
||||
// const CLIENT_ID = '{AUTH0_CLIENT_ID}';
|
||||
// const CLIENT_DOMAIN = '{AUTH0_DOMAIN}';
|
||||
// const REDIRECT = 'YOUR_CALLBACK_URL';
|
||||
// const SCOPE = '{SCOPE}';
|
||||
// const AUDIENCE = 'AUDIENCE_ATTRIBUTE';
|
||||
|
||||
// var auth = new auth0.WebAuth({
|
||||
// clientID: CLIENT_ID,
|
||||
// domain: CLIENT_DOMAIN
|
||||
// });
|
||||
|
||||
//https://stackoverflow.com/questions/15551652/javascript-enum-flag-check
|
||||
const AuthorizationRoles = {
|
||||
@@ -54,6 +40,21 @@ const AuthorizationRoles = {
|
||||
OpsAdminFull: 16384
|
||||
}; //end AuthorizationRoles
|
||||
|
||||
const ID_TOKEN_KEY = "id_token";
|
||||
const ACCESS_TOKEN_KEY = "access_token";
|
||||
const USER_ROLES = AuthorizationRoles.NoRole;
|
||||
|
||||
// const CLIENT_ID = '{AUTH0_CLIENT_ID}';
|
||||
// const CLIENT_DOMAIN = '{AUTH0_DOMAIN}';
|
||||
// const REDIRECT = 'YOUR_CALLBACK_URL';
|
||||
// const SCOPE = '{SCOPE}';
|
||||
// const AUDIENCE = 'AUDIENCE_ATTRIBUTE';
|
||||
|
||||
// var auth = new auth0.WebAuth({
|
||||
// clientID: CLIENT_ID,
|
||||
// domain: CLIENT_DOMAIN
|
||||
// });
|
||||
|
||||
export function login() {
|
||||
// auth.authorize({
|
||||
// responseType: 'token id_token',
|
||||
@@ -149,4 +150,4 @@ export function hasRole(role) {
|
||||
// }
|
||||
}
|
||||
|
||||
//TODO: Auth JWT needs to return roles as an int enum
|
||||
//TODO: Auth JWT needs to return roles as an int enum
|
||||
|
||||
@@ -22,23 +22,34 @@ export default {
|
||||
methods: {
|
||||
login() {
|
||||
if (this.input.username != "" && this.input.password != "") {
|
||||
// eslint-disable-next-line
|
||||
var response = auth.authenticate(
|
||||
this.input.username,
|
||||
this.input.password
|
||||
);
|
||||
|
||||
if (
|
||||
this.input.username == this.$store.state.mockAccount.username &&
|
||||
this.input.password == this.$store.state.mockAccount.password
|
||||
auth.authenticate(this.input.username, this.input.password, function(
|
||||
data
|
||||
) {
|
||||
this.$emit("authenticated", true);
|
||||
this.$router.replace({ name: "secure" });
|
||||
} else {
|
||||
alert("The username and / or password is incorrect");
|
||||
}
|
||||
} else {
|
||||
alert("A username and password must be present");
|
||||
// eslint-disable-next-line
|
||||
console.log("LOGIN.VUE::login() -> CB VERSION DATA:", data);
|
||||
});
|
||||
|
||||
// if (
|
||||
// this.input.username == this.$store.state.mockAccount.username &&
|
||||
// this.input.password == this.$store.state.mockAccount.password
|
||||
// ) {
|
||||
// this.$emit("authenticated", true);
|
||||
// this.$router.replace({ name: "secure" });
|
||||
// } else {
|
||||
// alert("The username and / or password is incorrect");
|
||||
// }
|
||||
// } else {
|
||||
// alert("A username and password must be present");
|
||||
|
||||
auth
|
||||
.authenticatepromise(this.input.username, this.input.password)
|
||||
.then(response => {
|
||||
// eslint-disable-next-line
|
||||
console.log(
|
||||
"LOGIN.VUE::login() -> PROMISE VERSION RESPONSE:",
|
||||
response
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +130,18 @@ namespace AyaNova
|
||||
});
|
||||
|
||||
|
||||
// Add service and create Policy with options
|
||||
_log.LogDebug("BOOT: init CORS service");
|
||||
services.AddCors(options =>
|
||||
{
|
||||
options.AddPolicy("CorsPolicy",
|
||||
builder => builder.AllowAnyOrigin()
|
||||
.AllowAnyMethod()
|
||||
.AllowAnyHeader()
|
||||
.AllowCredentials());
|
||||
});
|
||||
|
||||
|
||||
_log.LogDebug("BOOT: init MVC service");
|
||||
_log.LogDebug("BOOT: init Metrics service");
|
||||
|
||||
@@ -240,7 +252,7 @@ namespace AyaNova
|
||||
|
||||
// Token will only be valid if not expired yet, with 5 minutes clock skew.
|
||||
ValidateLifetime = true,
|
||||
RequireExpirationTime = true,
|
||||
RequireExpirationTime = true,
|
||||
ClockSkew = new TimeSpan(0, 5, 0),
|
||||
};
|
||||
});
|
||||
@@ -357,6 +369,8 @@ namespace AyaNova
|
||||
|
||||
#endregion
|
||||
|
||||
_log.LogDebug("BOOT: pipeline - CORS");
|
||||
app.UseCors("CorsPolicy");
|
||||
|
||||
//USE MVC
|
||||
_log.LogDebug("BOOT: pipeline - MVC");
|
||||
|
||||
Reference in New Issue
Block a user