diff --git a/myndla-api/src/main/scala/no/ndla/myndlaapi/service/FolderConverterService.scala b/myndla-api/src/main/scala/no/ndla/myndlaapi/service/FolderConverterService.scala index 2403145c2..cdfe9340d 100644 --- a/myndla-api/src/main/scala/no/ndla/myndlaapi/service/FolderConverterService.scala +++ b/myndla-api/src/main/scala/no/ndla/myndlaapi/service/FolderConverterService.scala @@ -276,6 +276,7 @@ trait FolderConverterService { updaterToken: Option[TokenUser], updaterUser: Option[DomainMyNDLAUser], arenaEnabledUsers: List[String], + arenaEnabledOrgs: List[String], feideToken: Option[FeideAccessToken] ): Try[DomainMyNDLAUser] = { val favoriteSubjects = updatedUser.favoriteSubjects.getOrElse(domainUserData.favoriteSubjects) @@ -283,7 +284,9 @@ trait FolderConverterService { if (updaterToken.hasPermission(LEARNINGPATH_API_ADMIN) || updaterUser.exists(_.isAdmin)) updatedUser.arenaEnabled.getOrElse(domainUserData.arenaEnabled) else - domainUserData.arenaEnabled || arenaEnabledUsers.map(_.toLowerCase).contains(domainUserData.email.toLowerCase) + domainUserData.arenaEnabled || arenaEnabledUsers + .map(_.toLowerCase) + .contains(domainUserData.email.toLowerCase) || arenaEnabledOrgs.contains(domainUserData.organization) } val arenaAccepted = getArenaAccepted(arenaEnabled, domainUserData, updatedUser, feideToken).? diff --git a/myndla-api/src/main/scala/no/ndla/myndlaapi/service/UserService.scala b/myndla-api/src/main/scala/no/ndla/myndlaapi/service/UserService.scala index 9b861fdeb..f977f7728 100644 --- a/myndla-api/src/main/scala/no/ndla/myndlaapi/service/UserService.scala +++ b/myndla-api/src/main/scala/no/ndla/myndlaapi/service/UserService.scala @@ -137,16 +137,17 @@ trait UserService { _ <- folderWriteService.canWriteDuringMyNDLAWriteRestrictionsOrAccessDenied(feideId, feideAccessToken) existingUserData <- getMyNDLAUserOrFail(feideId) enabledUsers <- configService.getMyNDLAEnabledUsers + enabledOrgs <- configService.getMyNDLAEnabledOrgs combined <- folderConverterService.mergeUserData( existingUserData, updatedUser, None, Some(existingUserData), enabledUsers, + enabledOrgs, feideAccessToken ) - updated <- userRepository.updateUser(feideId, combined) - enabledOrgs <- configService.getMyNDLAEnabledOrgs + updated <- userRepository.updateUser(feideId, combined) api = folderConverterService.toApiUserData(updated, enabledOrgs) } yield api } @@ -160,18 +161,19 @@ trait UserService { for { existing <- userService.getUserById(userId)(session) enabledUsers <- configService.getMyNDLAEnabledUsers + enabledOrgs <- configService.getMyNDLAEnabledOrgs converted <- folderConverterService.mergeUserData( existing, updatedUser, updaterToken, updaterMyNdla, enabledUsers, + enabledOrgs, // NOTE: This token is used to create a nodebb profile // since the one updating here is an admin, we cannot use it to create a profile. feideToken = None ) - updated <- userRepository.updateUserById(userId, converted)(session) - enabledOrgs <- configService.getMyNDLAEnabledOrgs + updated <- userRepository.updateUserById(userId, converted)(session) api = folderConverterService.toApiUserData(updated, enabledOrgs) } yield api } diff --git a/myndla-api/src/test/scala/no/ndla/myndlaapi/service/FolderConverterServiceTest.scala b/myndla-api/src/test/scala/no/ndla/myndlaapi/service/FolderConverterServiceTest.scala index 08b82c549..cc3d155bd 100644 --- a/myndla-api/src/test/scala/no/ndla/myndlaapi/service/FolderConverterServiceTest.scala +++ b/myndla-api/src/test/scala/no/ndla/myndlaapi/service/FolderConverterServiceTest.scala @@ -563,13 +563,13 @@ class FolderConverterServiceTest extends UnitTestSuite with TestEnvironment { arenaAccepted = true ) - service.mergeUserData(domainUserData, updatedUserData1, None, None, List.empty, None).get should be( + service.mergeUserData(domainUserData, updatedUserData1, None, None, List.empty, List.empty, None).get should be( expectedUserData1 ) - service.mergeUserData(domainUserData, updatedUserData2, None, None, List.empty, None).get should be( + service.mergeUserData(domainUserData, updatedUserData2, None, None, List.empty, List.empty, None).get should be( expectedUserData2 ) - service.mergeUserData(domainUserData, updatedUserData3, None, None, List.empty, None).get should be( + service.mergeUserData(domainUserData, updatedUserData3, None, None, List.empty, List.empty, None).get should be( expectedUserData3 ) }