Skip to content

Commit

Permalink
Merge pull request #67 from shashwatbangar/#2hr41aq
Browse files Browse the repository at this point in the history
Implemented: Code to check if user has permission to access the app(#2hr41aq)
  • Loading branch information
adityasharma7 authored Aug 25, 2022
2 parents 99de4f6 + c19a4e8 commit 892d379
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 11 deletions.
3 changes: 2 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
VUE_APP_I18N_LOCALE=en
VUE_APP_I18N_FALLBACK_LOCALE=en
VUE_APP_CACHE_MAX_AGE=3600
VUE_APP_BASE_URL=VUE_APP_BASE_URL
VUE_APP_BASE_URL=VUE_APP_BASE_URL
VUE_APP_PERMISSION_ID=
7 changes: 2 additions & 5 deletions src/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,8 @@ const api = async (customConfig: any) => {
params: customConfig.params
}

let baseURL = process.env.VUE_APP_BASE_URL;
if(!baseURL){
baseURL = store.getters['user/getInstanceUrl'];
baseURL = baseURL && baseURL.startsWith('http') ? baseURL : `https://${baseURL}.hotwax.io/api/`;
}
let baseURL = store.getters['user/getInstanceUrl'];
baseURL = baseURL && baseURL.startsWith('http') ? baseURL : `https://${baseURL}.hotwax.io/api/`;
if(baseURL) config.baseURL = baseURL;

if(customConfig.cache) config.adapter = axiosCache.adapter;
Expand Down
15 changes: 14 additions & 1 deletion src/services/UserService.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import api from '@/api'
import api, {client} from '@/api'
import store from '@/store';

const login = async (username: string, password: string): Promise <any> => {
return api({
Expand All @@ -11,6 +12,17 @@ const login = async (username: string, password: string): Promise <any> => {
});
}

const checkPermission = async (payload: any): Promise <any> => {
let baseURL = store.getters['user/getInstanceUrl'];
baseURL = baseURL && baseURL.startsWith('http') ? baseURL : `https://${baseURL}.hotwax.io/api/`;
return client({
url: "checkPermission",
method: "post",
baseURL: baseURL,
...payload
});
}

const getProfile = async (): Promise <any> => {
return api({
url: "user-profile",
Expand All @@ -37,4 +49,5 @@ export const UserService = {
getAvailableTimeZones,
getProfile,
setUserTimeZone,
checkPermission
}
34 changes: 31 additions & 3 deletions src/store/modules/user/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,37 @@ const actions: ActionTree<UserState, RootState> = {
const resp = await UserService.login(username, password)
if (resp.status === 200 && resp.data) {
if (resp.data.token) {
commit(types.USER_TOKEN_CHANGED, { newToken: resp.data.token })
dispatch('getProfile')
return resp.data;
const permissionId = process.env.VUE_APP_PERMISSION_ID;
if (permissionId) {
const checkPermissionResponse = await UserService.checkPermission({
data: {
permissionId
},
headers: {
Authorization: 'Bearer ' + resp.data.token,
'Content-Type': 'application/json'
}
});

if (checkPermissionResponse.status === 200 && !hasError(checkPermissionResponse) && checkPermissionResponse.data && checkPermissionResponse.data.hasPermission) {
commit(types.USER_TOKEN_CHANGED, { newToken: resp.data.token })
dispatch('getProfile')
if (resp.data._EVENT_MESSAGE_ && resp.data._EVENT_MESSAGE_.startsWith("Alert:")) {
// TODO Internationalise text
showToast(translate(resp.data._EVENT_MESSAGE_));
}
return resp.data;
} else {
const permissionError = 'You do not have permission to access the app.';
showToast(translate(permissionError));
console.error("error", permissionError);
return Promise.reject(new Error(permissionError));
}
} else {
commit(types.USER_TOKEN_CHANGED, { newToken: resp.data.token })
dispatch('getProfile')
return resp.data;
}
} else if (hasError(resp)) {
showToast(translate('Sorry, your username or password is incorrect. Please try again.'));
console.error("error", resp.data._ERROR_MESSAGE_);
Expand Down
3 changes: 2 additions & 1 deletion src/store/modules/user/getters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ const getters: GetterTree <UserState, RootState> = {
return state.currentFacility;
},
getInstanceUrl (state) {
return state.instanceUrl;
const baseUrl = process.env.VUE_APP_BASE_URL;
return baseUrl ? baseUrl : state.instanceUrl;
}
}
export default getters;

0 comments on commit 892d379

Please sign in to comment.