Skip to content

Commit 714381b

Browse files
authored
Merge pull request #950 from NDLANO/feat/openapi-auth-url-and-scopes
feat: generate proper auth/token URLs and scopes for Auth0 OpenAPI docs
2 parents b1757ce + 3ce8316 commit 714381b

95 files changed

Lines changed: 284 additions & 451 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

article-api/src/main/scala/no/ndla/articleapi/ArticleApiProperties.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
package no.ndla.articleapi
1010

11+
import no.ndla.common.auth.Permission
1112
import no.ndla.common.configuration.{BaseProps, Prop}
1213
import no.ndla.common.model.EmbedType
1314
import no.ndla.database.DatabaseProps
@@ -79,4 +80,6 @@ class ArticleApiProperties extends BaseProps with DatabaseProps {
7980

8081
override def MetaMigrationLocation: String = "no/ndla/articleapi/db/migration"
8182
override def MetaMigrationTable: Option[String] = Some("schema_version")
83+
84+
override val ndlaAuth0Scopes: Seq[Permission] = Permission.thatStartsWith("articles") :+ Permission.DRAFT_API_WRITE
8285
}

article-api/src/main/scala/no/ndla/articleapi/ComponentRegistry.scala

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import no.ndla.network.tapir.{
3838
ErrorHelpers,
3939
Routes,
4040
SwaggerController,
41+
SwaggerInfo,
4142
TapirApplication,
4243
TapirController,
4344
TapirHealthController,
@@ -91,11 +92,15 @@ class ComponentRegistry(properties: ArticleApiProperties) extends TapirApplicati
9192
new V67__ComputeSearchTraitsAgain,
9293
)
9394

94-
given swagger: SwaggerController = new SwaggerController(
95-
List[TapirController](articleControllerV2, internController, healthController),
96-
SwaggerDocControllerConfig.swaggerInfo,
95+
given swaggerInfo: SwaggerInfo = SwaggerInfo(
96+
prefix = "article-api",
97+
description = "Searching and fetching all articles published on the NDLA platform.\n\n" +
98+
"The Article API provides an endpoint for searching and fetching articles. Different meta-data is attached to the " +
99+
"returned articles, and typical examples of this are language and license.\n" +
100+
"Includes endpoints to filter Articles on different levels, and retrieve single articles.",
97101
)
102+
given swagger: SwaggerController = new SwaggerController(internController, articleControllerV2, healthController)
98103

99-
given services: List[TapirController] = swagger.getServices()
104+
given services: List[TapirController] = swagger.allServices
100105
given routes: Routes = new Routes
101106
}

article-api/src/main/scala/no/ndla/articleapi/controller/InternController.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import no.ndla.database.DBUtility
2525
import no.ndla.language.Language
2626
import no.ndla.network.tapir.NoNullJsonPrinter.jsonBody
2727
import no.ndla.network.tapir.TapirUtil.errorOutputsFor
28-
import no.ndla.network.tapir.auth.Permission.ARTICLE_API_WRITE
28+
import no.ndla.common.auth.Permission.ARTICLE_API_WRITE
2929
import no.ndla.network.tapir.{ErrorHandling, ErrorHelpers, TapirController}
3030
import no.ndla.network.clients.MyNDLAApiClient
3131
import sttp.model.StatusCode

article-api/src/main/scala/no/ndla/articleapi/controller/SwaggerDocControllerConfig.scala

Lines changed: 0 additions & 28 deletions
This file was deleted.

audio-api/src/main/scala/no/ndla/audioapi/AudioApiProperties.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package no.ndla.audioapi
1010

1111
import com.typesafe.scalalogging.StrictLogging
12+
import no.ndla.common.auth.Permission
1213
import no.ndla.common.configuration.{BaseProps, Prop}
1314
import no.ndla.database.DatabaseProps
1415
import no.ndla.network.{AuthUser, Domains}
@@ -67,4 +68,6 @@ class AudioApiProperties extends BaseProps with DatabaseProps with StrictLogging
6768

6869
override def MetaMigrationLocation: String = "no/ndla/audioapi/db/migration"
6970
override def MetaMigrationTable: Option[String] = Some("schema_version")
71+
72+
override val ndlaAuth0Scopes: Seq[Permission] = Permission.thatStartsWith("audio")
7073
}

audio-api/src/main/scala/no/ndla/audioapi/ComponentRegistry.scala

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import no.ndla.common.brightcove.NdlaBrightcoveClient
2121
import no.ndla.database.{DBMigrator, DataSource, DBUtility}
2222
import no.ndla.network.NdlaClient
2323
import no.ndla.network.clients.MyNDLAApiClient
24-
import no.ndla.network.tapir.{ErrorHelpers, Routes, SwaggerController, TapirApplication}
24+
import no.ndla.network.tapir.{ErrorHelpers, Routes, SwaggerController, SwaggerInfo, TapirApplication}
2525
import no.ndla.search.{Elastic4sClientFactory, NdlaE4sClient, SearchLanguage}
2626

2727
class ComponentRegistry(properties: AudioApiProperties) extends TapirApplication[AudioApiProperties] {
@@ -70,11 +70,21 @@ class ComponentRegistry(properties: AudioApiProperties) extends TapirApplication
7070
given healthController: HealthController = new HealthController
7171
given transcriptionController: TranscriptionController = new TranscriptionController
7272

73+
given swaggerInfo: SwaggerInfo = SwaggerInfo(
74+
prefix = "audio-api",
75+
description = "Searching and fetching all audio used in the NDLA platform.\n\n" +
76+
"The Audio API provides an endpoint for searching and fetching audio used in NDLA resources. " +
77+
"Meta-data like title, tags, language and license are searchable and also provided in the results. " +
78+
"The media file is provided as an URL with the mime type.",
79+
)
7380
given swagger: SwaggerController = new SwaggerController(
74-
List(audioApiController, seriesController, internController, healthController, transcriptionController),
75-
SwaggerDocControllerConfig.swaggerInfo,
81+
internController,
82+
audioApiController,
83+
seriesController,
84+
healthController,
85+
transcriptionController,
7686
)
7787

78-
given services: List[no.ndla.network.tapir.TapirController] = swagger.getServices()
88+
given services: List[no.ndla.network.tapir.TapirController] = swagger.allServices
7989
given routes: Routes = new Routes
8090
}

audio-api/src/main/scala/no/ndla/audioapi/controller/AudioController.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import no.ndla.common.model.domain.UploadedFile
2525
import no.ndla.network.clients.MyNDLAApiClient
2626
import no.ndla.network.tapir.{ErrorHelpers, NonEmptyString, TapirController}
2727
import no.ndla.network.tapir.TapirUtil.errorOutputsFor
28-
import no.ndla.network.tapir.auth.Permission.AUDIO_API_WRITE
28+
import no.ndla.common.auth.Permission.AUDIO_API_WRITE
2929
import sttp.model.Part
3030
import sttp.tapir.EndpointIO.annotations.{header, jsonbody}
3131
import sttp.tapir.generic.auto.*

audio-api/src/main/scala/no/ndla/audioapi/controller/HealthController.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
package no.ndla.audioapi.controller
1010

11+
import no.ndla.audioapi.Props
1112
import no.ndla.audioapi.integration.NDLAS3Client
1213
import no.ndla.audioapi.repository.AudioRepository
1314
import no.ndla.network.tapir.{ErrorHelpers, TapirHealthController}
@@ -21,6 +22,7 @@ class HealthController(using
2122
myNDLAApiClient: MyNDLAApiClient,
2223
errorHelpers: ErrorHelpers,
2324
errorHandling: ControllerErrorHandling,
25+
props: Props,
2426
) extends TapirHealthController {
2527
private def checkBucketAccess(): Either[String, Unit] = s3Client.canAccessBucket match {
2628
case Failure(ex) =>

audio-api/src/main/scala/no/ndla/audioapi/controller/SeriesController.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import no.ndla.audioapi.service.{ReadService, WriteService}
1919
import no.ndla.language.Language
2020
import no.ndla.network.tapir.NoNullJsonPrinter.*
2121
import no.ndla.network.tapir.TapirUtil.errorOutputsFor
22-
import no.ndla.network.tapir.auth.Permission.AUDIO_API_WRITE
22+
import no.ndla.common.auth.Permission.AUDIO_API_WRITE
2323
import no.ndla.common.implicits.*
2424
import no.ndla.common.model.api.LanguageCode
2525
import no.ndla.network.tapir.{ErrorHelpers, TapirController}

audio-api/src/main/scala/no/ndla/audioapi/controller/SwaggerDocControllerConfig.scala

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)