Skip to content

Instantly share code, notes, and snippets.

View lforite's full-sized avatar
💯
TTT, types types types

Louis Forite lforite

💯
TTT, types types types
View GitHub Profile
@lforite
lforite / querey.sql
Created November 29, 2021 10:12
My sql query
SELECT * FROM MYTABLE
@lforite
lforite / authorization_predicate_testing_custom_predicates.scala
Last active October 22, 2021 09:13
Scala web series Pt. 1 testing our custom predicates
"HasProject" should {
"return true for any user who has this project" in {
forAll("projectId", "allProjects") { (projectId: UUID, allProjects: Set[UUID]) =>
val projects = (allProjects + projectId).toSeq
HasProject(projectId).evaluate(
Token(..., projectIds = projectIds)
) mustBe true
}
}
@lforite
lforite / authorization_predicate_scalacheck.scala
Last active October 22, 2021 08:13
Scala web series Pt. 1 testing and and or logic
"&& should respect AND boolean logic" in forAll() { (boolean1: Boolean, boolean2: Boolean) =>
val anyToken = Token(...)
val predicate1 = new AuthorizationPredicate {
override def evaluate(token: token): Boolean = boolean1
}
val predicate2 = new AuthorizationPredicate {
override def evaluate(token: token): Boolean = boolean2
}
(predicate1 && predicate2).evaluate(anyToken) mustBe (boolean1 && boolean2)
@lforite
lforite / authorization_predicate_authorize_ops_usage.scala
Created October 22, 2021 07:55
Scala web series Pt. 1 authorize a request based on its truthfulness usage
import AuthorizationOps._
(
(HasClient(request.clientId) &&
HasProjects(request.projects)) &&
(HasPermission("data.write") || ("data.all"))
).authorize(token) {
// your code if authorized
}
@lforite
lforite / authorization_predicate_authorize_ops.scala
Last active October 22, 2021 09:43
Scala web series Pt. 1 authorize a request based on its truthfulness
implicit AuthorizationOps(predicate: AuthorizationPredicate) {
def authorize[T](token: Token)(f: => Future[T]): Future[T] {
if(predicate.evaluate(token)) {
f()
} else {
Future.failed(AuthorizationException("..."))
}
}
}
@lforite
lforite / authorization_predicate_combined.scala
Created October 22, 2021 07:51
Scala web series Pt. 1 combined authorization predicates
(
HasClient(request.clientId) &&
HasProjects(request.projects) &&
(
HasPermission("data.write") ||
HasPermission("data.all")
)
).evaluate(token)
@lforite
lforite / authorization_predicate_combinators.scala
Created October 22, 2021 07:48
Scala web series Pt. 1 authorization predicate combinators
trait AuthorizationPredicate { self =>
def evaluate(token: Token): Boolean
def &&(predicate: AuthorizationPredicate): AuthorizationPredicate = new AuthorizationPredicate {
override def evaluate(token: Token): Boolean = self.evaluate(token) && predicate.evaluate(token)
}
def ||(predicate: AuthorizationPredicate): AuthorizationPredicate = new AuthorizationPredicate {
override def evaluate(token: token): Boolean = self.evaluate(token) || predicate.evaluate(token)
}
case class HasPermission(permission: String) extends AuthorizationPredicate {
override def evaluate(token: Token): Boolean = token.permissions.contains(permission)
}
case class HasPermissions(permissions: List[String]) extends AuthorizationPredicate {
override def evaluate(token: Token): Boolean = permission.forall(token.permissions.contains)
}
case class HasClient(clientId: UUID) extends AuthorizationPredicate {
override def evaluate(token: Token): Boolean = token.clientId == clientId
@lforite
lforite / authorization_predicate_always_true.scala
Created October 22, 2021 07:42
Scala web series Pt. 1 always true predicate
val alwaysTruePredicate = new AuthorizationPredicate {
override def evaluate(token: Token): Boolean = true
}
val isAuthorized = alwaysTruePredicate.evaluate(token) //will always be true
@lforite
lforite / authorization_predicate.scala
Created October 22, 2021 07:41
Scala web series Pt. 1 authorization predicate
trait AuthorizationPredicate {
def evaluate(token: Token): Boolean
}