Add OpenID support to webapp

This commit is contained in:
eikek
2021-09-05 23:43:07 +02:00
parent f8362329a9
commit 984dda9da0
13 changed files with 138 additions and 32 deletions

View File

@ -7,9 +7,8 @@
package docspell.restserver.webapp
import docspell.backend.signup.{Config => SignupConfig}
import docspell.common.LenientUri
import docspell.common.{Ident, LenientUri}
import docspell.restserver.{BuildInfo, Config}
import io.circe._
import io.circe.generic.semiauto._
import yamusca.implicits._
@ -25,7 +24,8 @@ case class Flags(
maxPageSize: Int,
maxNoteLength: Int,
showClassificationSettings: Boolean,
uiVersion: Int
uiVersion: Int,
openIdAuth: List[Flags.OpenIdAuth]
)
object Flags {
@ -40,9 +40,20 @@ object Flags {
cfg.maxItemPageSize,
cfg.maxNoteLength,
cfg.showClassificationSettings,
uiVersion
uiVersion,
cfg.openid.filter(_.enabled).map(c => OpenIdAuth(c.provider.providerId, c.display))
)
final case class OpenIdAuth(provider: Ident, name: String)
object OpenIdAuth {
implicit val jsonDecoder: Decoder[OpenIdAuth] =
deriveDecoder[OpenIdAuth]
implicit val jsonEncoder: Encoder[OpenIdAuth] =
deriveEncoder[OpenIdAuth]
}
private def getBaseUrl(cfg: Config): String =
if (cfg.baseUrl.isLocal) cfg.baseUrl.rootPathToEmpty.path.asString
else cfg.baseUrl.rootPathToEmpty.asString
@ -50,6 +61,10 @@ object Flags {
implicit val jsonEncoder: Encoder[Flags] =
deriveEncoder[Flags]
implicit def yamuscaIdentConverter: ValueConverter[Ident] =
ValueConverter.of(id => Value.fromString(id.id))
implicit def yamuscaOpenIdAuthConverter: ValueConverter[OpenIdAuth] =
ValueConverter.deriveConverter[OpenIdAuth]
implicit def yamuscaSignupModeConverter: ValueConverter[SignupConfig.Mode] =
ValueConverter.of(m => Value.fromString(m.name))
implicit def yamuscaUriConverter: ValueConverter[LenientUri] =