Skip to content

Commit 48e659f

Browse files
committed
Cleanup and roles fix
1 parent d9724da commit 48e659f

File tree

5 files changed

+20
-17
lines changed

5 files changed

+20
-17
lines changed

api/src/middleware/authz.middleware.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export async function loadUser(req: Request, res: Response, next: NextFunction)
8484
};
8585

8686
await db.create(newUser);
87-
req.user = { ...req.user, ...newUser };
87+
req.user = { ...req.user, ...newUser, roles: [] };
8888
}
8989
} else {
9090
console.log("Payload from Auth0 is strange or failed for", req.auth);

api/src/services/user-service.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { User } from "../data/models";
22
import { db } from "../data";
3+
import { isArray } from "lodash";
34

45
export class UserService {
56
async getAll(): Promise<User[]> {
@@ -8,19 +9,33 @@ export class UserService {
89

910
async getBySub(auth_subject: string): Promise<User | undefined> {
1011
let user = await db<User>("users").where({ auth_subject }).first();
12+
13+
if (user && user.roles) {
14+
if (!isArray(user.roles)) user.roles = user.roles.split(",");
15+
}
16+
1117
return user;
1218
}
1319

1420
async getById(id: number | string): Promise<User | undefined> {
1521
let user = await db<User>("users")
1622
.where({ id: parseInt(`${id}`) })
1723
.first();
24+
25+
if (user && user.roles) {
26+
if (!isArray(user.roles)) user.roles = user.roles.split(",");
27+
}
1828
return user;
1929
}
2030

2131
async getByEmail(email: string): Promise<User | undefined> {
2232
if (email) {
2333
let user = await db<User>("users").where({ email }).first();
34+
35+
if (user && user.roles) {
36+
if (!isArray(user.roles)) user.roles = user.roles.split(",");
37+
}
38+
2439
return user;
2540
}
2641

web/src/layouts/DefaultNoAuth.vue

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,22 +64,14 @@
6464
</template>
6565

6666
<script setup>
67-
import { onMounted, ref } from "vue";
68-
import { storeToRefs } from "pinia";
6967
import { useDisplay } from "vuetify";
68+
import { useAuth0 } from "@auth0/auth0-vue";
7069
7170
import { applicationName } from "@/config";
72-
import { useInterfaceStore } from "@/store/InterfaceStore";
73-
import { useAuth0 } from "@auth0/auth0-vue";
7471
import useCurrentUser from "@/use/use-current-user";
7572
7673
const { loginWithRedirect, logout } = useAuth0();
77-
78-
const interfaceStore = useInterfaceStore();
79-
const { isOffline } = storeToRefs(interfaceStore);
80-
8174
const { currentUser, isSystemAdmin } = useCurrentUser();
82-
8375
const { smAndUp } = useDisplay();
8476
8577
async function logoutClick() {

web/src/modules/administration/modules/users/store/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export interface User {
9999
is_active: boolean | string;
100100
iss: string;
101101

102-
roles: string | string[];
102+
roles: string[];
103103
}
104104

105105
if (import.meta.hot) {

web/src/use/use-current-user.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,8 @@ export function useCurrentUser<IsLoaded extends boolean = false>() {
103103
function hasRole(roleName: string): boolean {
104104
if (!state.currentUser) return false;
105105
if (state.currentUser.roles) {
106-
const roles = isArray(state.currentUser.roles || "")
107-
? [...state.currentUser.roles]
108-
: `${state.currentUser.roles}`.split(",");
109-
110-
const role = roles.find((r) => r == roleName);
111-
if (role) return true;
106+
const roles = state.currentUser.roles;
107+
return roles.includes(roleName);
112108
}
113109
return false;
114110
}

0 commit comments

Comments
 (0)