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

com.paulgoldbaum.influxdbclient.UserManagement.scala Maven / Gradle / Ivy

The newest version!
package com.paulgoldbaum.influxdbclient

protected[influxdbclient] trait UserManagement { self: InfluxDB =>
  def createUser(username: String, password: String, isClusterAdmin: Boolean = false) = {
    var queryString = "CREATE USER %s WITH PASSWORD '%s'".format(username, password)
    if (isClusterAdmin)
      queryString = queryString + " WITH ALL PRIVILEGES"
    exec(queryString)
  }

  def dropUser(username: String) = {
    val queryString = "DROP USER " + username
    exec(queryString)
  }

  def showUsers() =
    query("SHOW USERS")

  def setUserPassword(username: String, password: String) =
    exec("SET PASSWORD FOR %s='%s'".format(username, password))

  def grantPrivileges(username: String, database: String, privilege: Privilege) =
    exec("GRANT %s ON %s TO %s".format(privilege, database, username))

  def revokePrivileges(username: String, database: String, privilege: Privilege) =
    exec("REVOKE %s ON %s FROM %s".format(privilege, database, username))

  def makeClusterAdmin(username: String) =
    exec("GRANT ALL PRIVILEGES TO %s".format(username))

  def userIsClusterAdmin(username: String) = {
    showUsers().map(result =>
      result.series.head.records.exists(record =>
        record("user") == username && record("admin") == true))
  }

  protected[influxdbclient] def escapePassword(password: String) =
    password.replaceAll("(['\n])", "\\\\$1")
}

sealed trait Privilege
case object READ extends Privilege
case object WRITE extends Privilege
case object ALL extends Privilege




© 2015 - 2025 Weber Informatics LLC | Privacy Policy