feat(editor): Add routing middleware, permission checks, RBAC store, RBAC component (#7702)
Github issue / Community forum post (link here to close automatically): --------- Co-authored-by: Csaba Tuncsik <csaba@n8n.io>
This commit is contained in:
@@ -1,27 +1,30 @@
|
||||
import type { IPermissions } from '@/Interface';
|
||||
import { isAuthorized } from '@/utils';
|
||||
import { useUsersStore } from '@/stores/users.store';
|
||||
import { defineComponent } from 'vue';
|
||||
import type { RouteLocation } from 'vue-router';
|
||||
import { hasPermission } from '@/rbac/permissions';
|
||||
import type { RouteConfig } from '@/types/router';
|
||||
import type { PermissionTypeOptions } from '@/types/rbac';
|
||||
|
||||
export const userHelpers = defineComponent({
|
||||
methods: {
|
||||
canUserAccessRouteByName(name: string): boolean {
|
||||
canUserAccessRouteByName(name: string) {
|
||||
const route = this.$router.resolve({ name });
|
||||
|
||||
return this.canUserAccessRoute(route);
|
||||
},
|
||||
|
||||
canUserAccessCurrentRoute(): boolean {
|
||||
canUserAccessCurrentRoute() {
|
||||
return this.canUserAccessRoute(this.$route);
|
||||
},
|
||||
|
||||
canUserAccessRoute(route: RouteLocation): boolean {
|
||||
const permissions: IPermissions = route.meta?.permissions;
|
||||
const usersStore = useUsersStore();
|
||||
const currentUser = usersStore.currentUser;
|
||||
canUserAccessRoute(route: RouteLocation & RouteConfig) {
|
||||
const middleware = route.meta?.middleware;
|
||||
const middlewareOptions = route.meta?.middlewareOptions;
|
||||
|
||||
return permissions && isAuthorized(permissions, currentUser);
|
||||
if (!middleware) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return hasPermission(middleware, middlewareOptions as PermissionTypeOptions | undefined);
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user