Browse Source

fix(core): Fix permissions error on creation of superadmin

Relates to #2492, relates to #2478
Michael Bromley 2 years ago
parent
commit
3e4e31c2a3
1 changed files with 5 additions and 5 deletions
  1. 5 5
      packages/core/src/service/services/administrator.service.ts

+ 5 - 5
packages/core/src/service/services/administrator.service.ts

@@ -10,7 +10,7 @@ import { In, IsNull } from 'typeorm';
 import { RequestContext } from '../../api/common/request-context';
 import { RequestContext } from '../../api/common/request-context';
 import { RelationPaths } from '../../api/index';
 import { RelationPaths } from '../../api/index';
 import { EntityNotFoundError, InternalServerError, UserInputError } from '../../common/error/errors';
 import { EntityNotFoundError, InternalServerError, UserInputError } from '../../common/error/errors';
-import { idsAreEqual, normalizeEmailAddress } from '../../common/index';
+import { assertFound, idsAreEqual, normalizeEmailAddress } from '../../common/index';
 import { ListQueryOptions } from '../../common/types/common-types';
 import { ListQueryOptions } from '../../common/types/common-types';
 import { ConfigService } from '../../config';
 import { ConfigService } from '../../config';
 import { TransactionalConnection } from '../../connection/transactional-connection';
 import { TransactionalConnection } from '../../connection/transactional-connection';
@@ -317,10 +317,10 @@ export class AdministratorService {
                 superadminCredentials.identifier,
                 superadminCredentials.identifier,
                 superadminCredentials.password,
                 superadminCredentials.password,
             );
             );
-            const createdAdministrator = await this.connection
-                .getRepository(ctx, Administrator)
-                .save(administrator);
-            await this.assignRole(ctx, createdAdministrator.id, superAdminRole.id);
+            const { id } = await this.connection.getRepository(ctx, Administrator).save(administrator);
+            const createdAdministrator = await assertFound(this.findOne(ctx, id));
+            createdAdministrator.user.roles.push(superAdminRole);
+            await this.connection.getRepository(ctx, User).save(createdAdministrator.user, { reload: false });
         } else {
         } else {
             const superAdministrator = await this.connection.rawConnection
             const superAdministrator = await this.connection.rawConnection
                 .getRepository(Administrator)
                 .getRepository(Administrator)