permission selector type

This commit is contained in:
Thibault Duplessis 2018-08-20 22:55:03 +02:00
parent d8a1f58c13
commit e0a60576ba
5 changed files with 10 additions and 8 deletions

View file

@ -113,7 +113,7 @@ private[controllers] trait LilaController
}
}
protected def Secure(perm: Permission.type => Permission)(f: Context => UserModel => Fu[Result]): Action[AnyContent] =
protected def Secure(perm: Permission.Selector)(f: Context => UserModel => Fu[Result]): Action[AnyContent] =
Secure(perm(Permission))(f)
protected def Secure(perm: Permission)(f: Context => UserModel => Fu[Result]): Action[AnyContent] =
@ -134,7 +134,7 @@ private[controllers] trait LilaController
if (isGranted(perm)) f(ctx)(me) else authorizationFailed
}
protected def SecureBody(perm: Permission.type => Permission)(f: BodyContext[_] => UserModel => Fu[Result]): Action[AnyContent] =
protected def SecureBody(perm: Permission.Selector)(f: BodyContext[_] => UserModel => Fu[Result]): Action[AnyContent] =
SecureBody(BodyParsers.parse.anyContent)(perm(Permission))(f)
protected def Scoped[A](parser: BodyParser[A])(selectors: Seq[OAuthScope.Selector])(f: RequestHeader => UserModel => Fu[Result]): Action[A] =
@ -298,10 +298,10 @@ private[controllers] trait LilaController
protected def notFoundReq(req: RequestHeader): Fu[Result] =
reqToCtx(req) flatMap (x => notFound(x))
protected def isGranted(permission: Permission.type => Permission, user: UserModel): Boolean =
protected def isGranted(permission: Permission.Selector, user: UserModel): Boolean =
Granter(permission(Permission))(user)
protected def isGranted(permission: Permission.type => Permission)(implicit ctx: Context): Boolean =
protected def isGranted(permission: Permission.Selector)(implicit ctx: Context): Boolean =
isGranted(permission(Permission))
protected def isGranted(permission: Permission)(implicit ctx: Context): Boolean =

View file

@ -8,13 +8,13 @@ import lila.user.{ User, UserContext }
trait SecurityHelper {
def isGranted(permission: Permission.type => Permission)(implicit ctx: UserContext): Boolean =
def isGranted(permission: Permission.Selector)(implicit ctx: UserContext): Boolean =
isGranted(permission(Permission))
def isGranted(permission: Permission)(implicit ctx: UserContext): Boolean =
ctx.me ?? Granter(permission)
def isGranted(permission: Permission.type => Permission, user: User): Boolean =
def isGranted(permission: Permission.Selector, user: User): Boolean =
isGranted(permission(Permission), user)
def isGranted(permission: Permission, user: User): Boolean =

View file

@ -7,6 +7,6 @@ object Granter {
def apply(permission: Permission)(user: User): Boolean =
Permission(user.roles) exists (_ is permission)
def apply(f: Permission.type => Permission)(user: User): Boolean =
def apply(f: Permission.Selector)(user: User): Boolean =
apply(f(Permission))(user)
}

View file

@ -7,6 +7,8 @@ sealed abstract class Permission(val name: String, val children: List[Permission
object Permission {
type Selector = Permission.type => Permission
case object ViewBlurs extends Permission("ROLE_VIEW_BLURS")
case object StaffForum extends Permission("ROLE_STAFF_FORUM")
case object ModerateForum extends Permission("ROLE_MODERATE_FORUM")

View file

@ -7,7 +7,7 @@ trait SecurityHelper {
def isGranted(permission: Permission)(implicit ctx: UserContext): Boolean =
ctx.me ?? Granter(permission)
def isGranted(permission: Permission.type => Permission)(implicit ctx: UserContext): Boolean =
def isGranted(permission: Permission.Selector)(implicit ctx: UserContext): Boolean =
isGranted(permission(Permission))
def isGranted(permission: Permission, user: User): Boolean =