All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.florinn.veryfay.ActivityAuthorization.scala Maven / Gradle / Ivy

package com.github.florinn.veryfay

import scala.reflect.runtime.universe.TypeTag
import scala.util.{ Try, Success, Failure }

class ActivityAuthorization[T <: Activity[_]](activityRegistry: ActivityRegistry, activity: T) {
  def isAllowing[U: TypeTag, V: TypeTag](principal: U, extraInfo: Option[V] = None): Try[String] =
    this.authorize(principal, extraInfo)

  @throws(classOf[AuthorizationException])
  def verify[U: TypeTag, V: TypeTag](principal: U, extraInfo: Option[V] = None): String =
    this.authorize(principal, extraInfo) match {
      case Success(msg) => msg
      case Failure(e) => throw e
    }

  private def authorize[U: TypeTag, V: TypeTag](principal: U, extraInfo: Option[V]): Try[String] = {
    val activityPermissions = activityRegistry.get(activity) match {
      case Success(apList) => apList
      case Failure(e) => return Try(throw new AuthorizationException(e.getMessage))
    }
    PermissionVerifier.verify(activity, activityPermissions, principal, extraInfo)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy