Browse Source

Feature: Mobile - Add GraphQL operations for User.

Florian Liebe 2 years ago
parent
commit
8c94a3e80d

+ 1 - 23
app/controllers/concerns/checks_user_attributes_by_current_user_permission.rb

@@ -11,28 +11,6 @@ module ChecksUserAttributesByCurrentUserPermission
     # admins can do whatever they want
     return true if current_user.permissions?('admin.user')
 
-    # regular agents are not allowed to set Groups and Roles
-    suffixes = %w[_ids s]
-    %w[Role Group].each do |model|
-
-      suffixes.each do |suffix|
-        attribute = "#{model.downcase}#{suffix}"
-        values    = params[attribute]
-
-        next if values.nil?
-
-        logger.warn "#{model} assignment is only allowed by admin! User with ID #{current_user.id} tried to assign #{values.inspect}"
-        params.delete(attribute)
-      end
-    end
-
-    # check for create requests and set
-    # signup roles if no other roles are given
-    return true if params[:id].present?
-    return true if params[:role_ids]
-    return true if params[:roles]
-
-    params[:role_ids] = Role.signup_role_ids
-    true
+    execute_service(User::CheckAttributesService, user_data: params)
   end
 end

+ 1 - 1
app/frontend/apps/mobile/modules/search/graphql/mocks/mockSearchOverview.ts

@@ -3,7 +3,7 @@
 import type { SearchQuery } from '@shared/graphql/types'
 import type { ConfidentTake } from '@shared/types/utils'
 import { mockGraphQLApi } from '@tests/support/mock-graphql-api'
-import { SearchDocument } from '../searchOverview.api'
+import { SearchDocument } from '../queries/searchOverview.api'
 
 export const mockSearchOverview = (
   search: ConfidentTake<SearchQuery, 'search'>,

+ 1 - 1
app/frontend/apps/mobile/modules/search/graphql/searchOverview.api.ts → app/frontend/apps/mobile/modules/search/graphql/queries/searchOverview.api.ts

@@ -1,4 +1,4 @@
-import * as Types from '../../../../../shared/graphql/types';
+import * as Types from '../../../../../../shared/graphql/types';
 
 import gql from 'graphql-tag';
 import * as VueApolloComposable from '@vue/apollo-composable';

+ 0 - 0
app/frontend/apps/mobile/modules/search/graphql/searchOverview.graphql → app/frontend/apps/mobile/modules/search/graphql/queries/searchOverview.graphql


+ 1 - 1
app/frontend/apps/mobile/modules/search/views/SearchOverview.vue

@@ -16,7 +16,7 @@ import CommonButtonPills from '@mobile/components/CommonButtonPills/CommonButton
 import { useSessionStore } from '@shared/stores/session'
 import SearchResults from '../components/SearchResults.vue'
 import { useSearchPlugins } from '../plugins'
-import { useSearchLazyQuery } from '../graphql/searchOverview.api'
+import { useSearchLazyQuery } from '../graphql/queries/searchOverview.api'
 
 interface SearchTypeItem extends MenuItem {
   value: string

+ 26 - 0
app/frontend/apps/mobile/modules/user/graphql/mutations/add.api.ts

@@ -0,0 +1,26 @@
+import * as Types from '../../../../../../shared/graphql/types';
+
+import gql from 'graphql-tag';
+import { UserAttributesFragmentDoc } from '../../../../../../shared/graphql/fragments/userAttributes.api';
+import { ErrorsFragmentDoc } from '../../../../../../shared/graphql/fragments/errors.api';
+import * as VueApolloComposable from '@vue/apollo-composable';
+import * as VueCompositionApi from 'vue';
+export type ReactiveFunction<TParam> = () => TParam;
+
+export const UserAddDocument = gql`
+    mutation userAdd($input: UserInput!) {
+  userAdd(input: $input) {
+    user {
+      ...userAttributes
+    }
+    errors {
+      ...errors
+    }
+  }
+}
+    ${UserAttributesFragmentDoc}
+${ErrorsFragmentDoc}`;
+export function useUserAddMutation(options: VueApolloComposable.UseMutationOptions<Types.UserAddMutation, Types.UserAddMutationVariables> | ReactiveFunction<VueApolloComposable.UseMutationOptions<Types.UserAddMutation, Types.UserAddMutationVariables>>) {
+  return VueApolloComposable.useMutation<Types.UserAddMutation, Types.UserAddMutationVariables>(UserAddDocument, options);
+}
+export type UserAddMutationCompositionFunctionResult = VueApolloComposable.UseMutationReturn<Types.UserAddMutation, Types.UserAddMutationVariables>;

+ 10 - 0
app/frontend/apps/mobile/modules/user/graphql/mutations/add.graphql

@@ -0,0 +1,10 @@
+mutation userAdd($input: UserInput!) {
+  userAdd(input: $input) {
+    user {
+      ...userAttributes
+    }
+    errors {
+      ...errors
+    }
+  }
+}

+ 26 - 0
app/frontend/apps/mobile/modules/user/graphql/mutations/update.api.ts

@@ -0,0 +1,26 @@
+import * as Types from '../../../../../../shared/graphql/types';
+
+import gql from 'graphql-tag';
+import { UserAttributesFragmentDoc } from '../../../../../../shared/graphql/fragments/userAttributes.api';
+import { ErrorsFragmentDoc } from '../../../../../../shared/graphql/fragments/errors.api';
+import * as VueApolloComposable from '@vue/apollo-composable';
+import * as VueCompositionApi from 'vue';
+export type ReactiveFunction<TParam> = () => TParam;
+
+export const UserUpdateDocument = gql`
+    mutation userUpdate($id: ID!, $input: UserInput!) {
+  userUpdate(id: $id, input: $input) {
+    user {
+      ...userAttributes
+    }
+    errors {
+      ...errors
+    }
+  }
+}
+    ${UserAttributesFragmentDoc}
+${ErrorsFragmentDoc}`;
+export function useUserUpdateMutation(options: VueApolloComposable.UseMutationOptions<Types.UserUpdateMutation, Types.UserUpdateMutationVariables> | ReactiveFunction<VueApolloComposable.UseMutationOptions<Types.UserUpdateMutation, Types.UserUpdateMutationVariables>>) {
+  return VueApolloComposable.useMutation<Types.UserUpdateMutation, Types.UserUpdateMutationVariables>(UserUpdateDocument, options);
+}
+export type UserUpdateMutationCompositionFunctionResult = VueApolloComposable.UseMutationReturn<Types.UserUpdateMutation, Types.UserUpdateMutationVariables>;

+ 10 - 0
app/frontend/apps/mobile/modules/user/graphql/mutations/update.graphql

@@ -0,0 +1,10 @@
+mutation userUpdate($id: ID!, $input: UserInput!) {
+  userUpdate(id: $id, input: $input) {
+    user {
+      ...userAttributes
+    }
+    errors {
+      ...errors
+    }
+  }
+}

+ 22 - 0
app/frontend/apps/mobile/modules/user/graphql/queries/user.api.ts

@@ -0,0 +1,22 @@
+import * as Types from '../../../../../../shared/graphql/types';
+
+import gql from 'graphql-tag';
+import { UserAttributesFragmentDoc } from '../../../../../../shared/graphql/fragments/userAttributes.api';
+import * as VueApolloComposable from '@vue/apollo-composable';
+import * as VueCompositionApi from 'vue';
+export type ReactiveFunction<TParam> = () => TParam;
+
+export const UserDocument = gql`
+    query user($userId: ID, $userInternalId: Int) {
+  user(user: {userId: $userId, userInternalId: $userInternalId}) {
+    ...userAttributes
+  }
+}
+    ${UserAttributesFragmentDoc}`;
+export function useUserQuery(variables: Types.UserQueryVariables | VueCompositionApi.Ref<Types.UserQueryVariables> | ReactiveFunction<Types.UserQueryVariables> = {}, options: VueApolloComposable.UseQueryOptions<Types.UserQuery, Types.UserQueryVariables> | VueCompositionApi.Ref<VueApolloComposable.UseQueryOptions<Types.UserQuery, Types.UserQueryVariables>> | ReactiveFunction<VueApolloComposable.UseQueryOptions<Types.UserQuery, Types.UserQueryVariables>> = {}) {
+  return VueApolloComposable.useQuery<Types.UserQuery, Types.UserQueryVariables>(UserDocument, variables, options);
+}
+export function useUserLazyQuery(variables: Types.UserQueryVariables | VueCompositionApi.Ref<Types.UserQueryVariables> | ReactiveFunction<Types.UserQueryVariables> = {}, options: VueApolloComposable.UseQueryOptions<Types.UserQuery, Types.UserQueryVariables> | VueCompositionApi.Ref<VueApolloComposable.UseQueryOptions<Types.UserQuery, Types.UserQueryVariables>> | ReactiveFunction<VueApolloComposable.UseQueryOptions<Types.UserQuery, Types.UserQueryVariables>> = {}) {
+  return VueApolloComposable.useLazyQuery<Types.UserQuery, Types.UserQueryVariables>(UserDocument, variables, options);
+}
+export type UserQueryCompositionFunctionResult = VueApolloComposable.UseQueryReturn<Types.UserQuery, Types.UserQueryVariables>;

Some files were not shown because too many files changed in this diff