You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
753 B
31 lines
753 B
package alfred.http
|
|
|
|
import alfred.BuildConfig
|
|
import alfred.BuildId
|
|
import alfred.Builds
|
|
import javax.enterprise.context.ApplicationScoped
|
|
import javax.inject.Inject
|
|
import javax.ws.rs.core.Response
|
|
|
|
@ApplicationScoped
|
|
class Security {
|
|
|
|
@field:Inject
|
|
lateinit var builds: Builds
|
|
|
|
fun requireKey(build: BuildId, apikey: String?, block: (BuildConfig) -> Any): Response {
|
|
val buildConfig = builds.buildConfig(build)
|
|
if (buildConfig.apikey != "" && buildConfig.apikey != apikey) {
|
|
return Response.status(Response.Status.UNAUTHORIZED).build()
|
|
}
|
|
|
|
val entity = block(buildConfig)
|
|
if (entity is Response) {
|
|
return entity
|
|
}
|
|
|
|
return Response.ok(entity).build()
|
|
}
|
|
|
|
}
|