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
}