private[config] def loadAdmin()

in configTools/src/main/scala/com/gu/janus/config/Loader.scala [133:163]


  private[config] def loadAdmin(
      config: Config,
      permissions: Set[Permission]
  ): Either[String, ACL] = {
    for {
      configuredAccess <- config
        .as[ConfiguredAdmin]("janus.admin")
        .left
        .map(err =>
          s"Failed to load admin config from path `janus.admin`: ${err.getMessage}"
        )
      acl <- configuredAccess.acl.toList.traverse {
        case (username, configuredAclEntries) =>
          for {
            userPermissions <- configuredAclEntries.traverse {
              configuredAclEntry =>
                permissions
                  .find(p =>
                    configuredAclEntry.account == p.account.authConfigKey && configuredAclEntry.label == p.label
                  )
                  .toRight(
                    s"The admin configuration for `$username` includes a permission that doesn't appear to be defined.\nIt has label `${configuredAclEntry.label}` and refers to the account with key ${configuredAclEntry.account}"
                  )
            }
          } yield username -> userPermissions.toSet
      }
    } yield ACL(
      acl.toMap,
      Set.empty
    ) // TODO: these shouldn't share a representation since Admin doesn't need the default permissions
  }