aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/directives/AuthDirectives.scala
blob: ff3424d73596ce2369a5b19da5e26f5635b871f4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package xyz.driver.core
package rest
package directives

import akka.http.scaladsl.server.{Directive1, Directives => AkkaDirectives}
import xyz.driver.core.auth.{Permission, User}
import xyz.driver.core.rest.auth.AuthProvider

/** Authentication and authorization directives. */
trait AuthDirectives extends AkkaDirectives {

  /** Authenticate a user based on service request headers and check if they have all given permissions. */
  def authenticateAndAuthorize[U <: User](
      authProvider: AuthProvider[U],
      permissions: Permission*): Directive1[AuthorizedServiceRequestContext[U]] = {
    authProvider.authorize(permissions: _*)
  }

}