mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
refactor(editor): Migrate userHelpers
mixin to composable (no-changelog) (#9737)
This commit is contained in:
parent
ca2e5d90ed
commit
ac7a561379
|
@ -45,7 +45,6 @@ import LoadingView from '@/views/LoadingView.vue';
|
||||||
import Telemetry from '@/components/Telemetry.vue';
|
import Telemetry from '@/components/Telemetry.vue';
|
||||||
import { HIRING_BANNER, VIEWS } from '@/constants';
|
import { HIRING_BANNER, VIEWS } from '@/constants';
|
||||||
|
|
||||||
import { userHelpers } from '@/mixins/userHelpers';
|
|
||||||
import { loadLanguage } from '@/plugins/i18n';
|
import { loadLanguage } from '@/plugins/i18n';
|
||||||
import useGlobalLinkActions from '@/composables/useGlobalLinkActions';
|
import useGlobalLinkActions from '@/composables/useGlobalLinkActions';
|
||||||
import { useExternalHooks } from '@/composables/useExternalHooks';
|
import { useExternalHooks } from '@/composables/useExternalHooks';
|
||||||
|
@ -74,7 +73,6 @@ export default defineComponent({
|
||||||
Modals,
|
Modals,
|
||||||
AIAssistantChat,
|
AIAssistantChat,
|
||||||
},
|
},
|
||||||
mixins: [userHelpers],
|
|
||||||
setup() {
|
setup() {
|
||||||
return {
|
return {
|
||||||
...useGlobalLinkActions(),
|
...useGlobalLinkActions(),
|
||||||
|
|
|
@ -111,7 +111,7 @@ import GiftNotificationIcon from './GiftNotificationIcon.vue';
|
||||||
|
|
||||||
import { useMessage } from '@/composables/useMessage';
|
import { useMessage } from '@/composables/useMessage';
|
||||||
import { ABOUT_MODAL_KEY, VERSIONS_MODAL_KEY, VIEWS } from '@/constants';
|
import { ABOUT_MODAL_KEY, VERSIONS_MODAL_KEY, VIEWS } from '@/constants';
|
||||||
import { userHelpers } from '@/mixins/userHelpers';
|
import { useUserHelpers } from '@/composables/useUserHelpers';
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
import { useCloudPlanStore } from '@/stores/cloudPlan.store';
|
import { useCloudPlanStore } from '@/stores/cloudPlan.store';
|
||||||
|
@ -131,6 +131,7 @@ import { useExternalHooks } from '@/composables/useExternalHooks';
|
||||||
import { useDebounce } from '@/composables/useDebounce';
|
import { useDebounce } from '@/composables/useDebounce';
|
||||||
import { useBecomeTemplateCreatorStore } from '@/components/BecomeTemplateCreatorCta/becomeTemplateCreatorStore';
|
import { useBecomeTemplateCreatorStore } from '@/components/BecomeTemplateCreatorCta/becomeTemplateCreatorStore';
|
||||||
import ProjectNavigation from '@/components/Projects/ProjectNavigation.vue';
|
import ProjectNavigation from '@/components/Projects/ProjectNavigation.vue';
|
||||||
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'MainSidebar',
|
name: 'MainSidebar',
|
||||||
|
@ -141,15 +142,17 @@ export default defineComponent({
|
||||||
BecomeTemplateCreatorCta,
|
BecomeTemplateCreatorCta,
|
||||||
ProjectNavigation,
|
ProjectNavigation,
|
||||||
},
|
},
|
||||||
mixins: [userHelpers],
|
|
||||||
setup() {
|
setup() {
|
||||||
const externalHooks = useExternalHooks();
|
const externalHooks = useExternalHooks();
|
||||||
const { callDebounced } = useDebounce();
|
const { callDebounced } = useDebounce();
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
externalHooks,
|
externalHooks,
|
||||||
callDebounced,
|
callDebounced,
|
||||||
...useMessage(),
|
...useMessage(),
|
||||||
|
...useUserHelpers(router, route),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
import { ABOUT_MODAL_KEY, VERSIONS_MODAL_KEY, VIEWS } from '@/constants';
|
import { ABOUT_MODAL_KEY, VERSIONS_MODAL_KEY, VIEWS } from '@/constants';
|
||||||
import { userHelpers } from '@/mixins/userHelpers';
|
import { useUserHelpers } from '@/composables/useUserHelpers';
|
||||||
import type { IFakeDoor } from '@/Interface';
|
import type { IFakeDoor } from '@/Interface';
|
||||||
import type { IMenuItem } from 'n8n-design-system';
|
import type { IMenuItem } from 'n8n-design-system';
|
||||||
import type { BaseTextKey } from '@/plugins/i18n';
|
import type { BaseTextKey } from '@/plugins/i18n';
|
||||||
|
@ -32,10 +32,17 @@ import { useUIStore } from '@/stores/ui.store';
|
||||||
import { useSettingsStore } from '@/stores/settings.store';
|
import { useSettingsStore } from '@/stores/settings.store';
|
||||||
import { useRootStore } from '@/stores/n8nRoot.store';
|
import { useRootStore } from '@/stores/n8nRoot.store';
|
||||||
import { hasPermission } from '@/utils/rbac/permissions';
|
import { hasPermission } from '@/utils/rbac/permissions';
|
||||||
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'SettingsSidebar',
|
name: 'SettingsSidebar',
|
||||||
mixins: [userHelpers],
|
setup() {
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
return {
|
||||||
|
...useUserHelpers(router, route),
|
||||||
|
};
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapStores(useRootStore, useSettingsStore, useUIStore),
|
...mapStores(useRootStore, useSettingsStore, useUIStore),
|
||||||
settingsFakeDoorFeatures(): IFakeDoor[] {
|
settingsFakeDoorFeatures(): IFakeDoor[] {
|
||||||
|
|
32
packages/editor-ui/src/composables/useUserHelpers.ts
Normal file
32
packages/editor-ui/src/composables/useUserHelpers.ts
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
import type { RouteLocation, RouteLocationNormalizedLoaded, Router } from 'vue-router';
|
||||||
|
import { hasPermission } from '@/utils/rbac/permissions';
|
||||||
|
import type { PermissionTypeOptions } from '@/types/rbac';
|
||||||
|
|
||||||
|
export function useUserHelpers(router: Router, route: RouteLocationNormalizedLoaded) {
|
||||||
|
const canUserAccessRouteByName = (name: string) => {
|
||||||
|
const resolvedRoute = router.resolve({ name });
|
||||||
|
|
||||||
|
return canUserAccessRoute(resolvedRoute);
|
||||||
|
};
|
||||||
|
|
||||||
|
const canUserAccessCurrentRoute = () => {
|
||||||
|
return canUserAccessRoute(route);
|
||||||
|
};
|
||||||
|
|
||||||
|
const canUserAccessRoute = (route: RouteLocation) => {
|
||||||
|
const middleware = route.meta?.middleware;
|
||||||
|
const middlewareOptions = route.meta?.middlewareOptions;
|
||||||
|
|
||||||
|
if (!middleware) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return hasPermission(middleware, middlewareOptions as PermissionTypeOptions | undefined);
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
canUserAccessRouteByName,
|
||||||
|
canUserAccessCurrentRoute,
|
||||||
|
canUserAccessRoute,
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,29 +0,0 @@
|
||||||
import { defineComponent } from 'vue';
|
|
||||||
import type { RouteLocation } from 'vue-router';
|
|
||||||
import { hasPermission } from '@/utils/rbac/permissions';
|
|
||||||
import type { PermissionTypeOptions } from '@/types/rbac';
|
|
||||||
|
|
||||||
export const userHelpers = defineComponent({
|
|
||||||
methods: {
|
|
||||||
canUserAccessRouteByName(name: string) {
|
|
||||||
const route = this.$router.resolve({ name });
|
|
||||||
|
|
||||||
return this.canUserAccessRoute(route);
|
|
||||||
},
|
|
||||||
|
|
||||||
canUserAccessCurrentRoute() {
|
|
||||||
return this.canUserAccessRoute(this.$route);
|
|
||||||
},
|
|
||||||
|
|
||||||
canUserAccessRoute(route: RouteLocation) {
|
|
||||||
const middleware = route.meta?.middleware;
|
|
||||||
const middlewareOptions = route.meta?.middlewareOptions;
|
|
||||||
|
|
||||||
if (!middleware) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return hasPermission(middleware, middlewareOptions as PermissionTypeOptions | undefined);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
Loading…
Reference in a new issue