Skip to content

Commit

Permalink
#263 make role case insensitive
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Sep 5, 2017
1 parent cef3e18 commit b7d2320
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 8 deletions.
2 changes: 1 addition & 1 deletion thehive-backend/app/models/JsonFormat.scala
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ object JsonFormat {

implicit val pathWrites: Writes[Path] = Writes((value: Path) JsString(value.toString))

private val roleWrites: Writes[Role] = Writes((role: Role) JsString(role.name))
private val roleWrites: Writes[Role] = Writes((role: Role) JsString(role.name.toLowerCase()))
private val roleReads: Reads[Role] = Reads {
case JsString(s) if Roles.isValid(s) JsSuccess(Roles.withName(s).get)
case _ JsError(Seq(JsPath Seq(JsonValidationError(s"error.expected.role(${Roles.roleNames}"))))
Expand Down
15 changes: 9 additions & 6 deletions thehive-backend/app/models/Roles.scala
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,18 @@ import org.elastic4play.models.AttributeFormat
import org.elastic4play.services.Role

object Roles {
object read extends Role("READ")
object write extends Role("WRITE")
object admin extends Role("ADMIN")
object alert extends Role("ALERT")
object read extends Role("read")
object write extends Role("write")
object admin extends Role("admin")
object alert extends Role("alert")
val roles: List[Role] = read :: write :: admin :: alert :: Nil

val roleNames: List[String] = roles.map(_.name)
def isValid(roleName: String): Boolean = roleNames.contains(roleName)
def withName(roleName: String): Option[Role] = roles.find(_.name == roleName)
def isValid(roleName: String): Boolean = roleNames.contains(roleName.toLowerCase())
def withName(roleName: String): Option[Role] = {
val lowerCaseRole = roleName.toLowerCase()
roles.find(_.name == lowerCaseRole)
}
}

object RoleAttributeFormat extends AttributeFormat[Role]("role") {
Expand Down
4 changes: 3 additions & 1 deletion thehive-backend/app/models/User.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package models
import scala.concurrent.Future

import play.api.libs.json.JsValue.jsValueToJsLookup
import play.api.libs.json.{ JsObject, JsString }
import play.api.libs.json.{ JsArray, JsObject, JsString }

import models.JsonFormat.userStatusFormat
import services.AuditedModel
Expand Down Expand Up @@ -39,4 +39,6 @@ class UserModel extends ModelDef[UserModel, User]("user") with UserAttributes wi
class User(model: UserModel, attributes: JsObject) extends EntityDef[UserModel, User](model, attributes) with UserAttributes with org.elastic4play.services.User {
override def getUserName = userName()
override def getRoles = roles()

override def toJson: JsObject = super.toJson + ("roles" JsArray(roles().map(r JsString(r.name.toLowerCase()))))
}

0 comments on commit b7d2320

Please sign in to comment.