class Arango::User

Attributes

active[RW]

DEFINE ===

body[R]
cache_name[R]
extra[RW]

DEFINE ===

name[RW]

DEFINE ===

password[W]
server[R]
user[RW]

DEFINE ===

user=[RW]

DEFINE ===

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/User.rb, line 9
def self.new(*args)
  hash = args[0]
  super unless hash.is_a?(Hash)
  database = hash[:database]
  if database.is_a?(Arango::Database) && database.server.active_cache
    cache_name = hash[:name]
    cached = database.server.cache.cache.dig(:user, cache_name)
    if cached.nil?
      hash[:cache_name] = cache_name
      return super
    else
      body = {}
      [:password, :extra, :active].each{|k| body[k] ||= hash[k]}
      cached.assign_attributes(body)
      return cached
    end
  end
  super
end
new(server:, password: "", name:, extra: {}, active: nil, cache_name: nil) click to toggle source
# File lib/User.rb, line 29
def initialize(server:, password: "", name:, extra: {}, active: nil, cache_name: nil)
  assign_server(server)
  unless cache_name.nil?
    @cache_name = cache_name
    @server.cache.save(:user, cache_name, self)
  end
  @password = password
  @name     = name
  @extra    = extra
  @active   = active
end

Public Instance Methods

[](database) click to toggle source
# File lib/User.rb, line 74
def [](database)
  if self.databases[database.to_sym] == "rw"
    Arango::Database.new name: database, server: @server
  else
    "This User does not have access to Database #{database}."
  end
end
Also aliased as: database
addCollectionAccess(grant:, database:, collection:) click to toggle source
# File lib/User.rb, line 144
def addCollectionAccess(grant:, database:, collection:)
  satisfy_category?(grant, ["rw", "ro", "none"])
  satisfy_class?(database, [Arango::Database, String])
  satisfy_class?(collection, [Arango::Collection, String])
  database = database.name     if database.is_a?(Arango::Database)
  collection = collection.name if collection.is_a?(Arango::Collection)
  body = {"grant": grant}
  result = @server.request("PUT", "_api/user/#{@name}/database/#{database}/#{collection}",
    body: body)
  return return_directly?(result) ? result : result[:"#{database}/#{collection}"]
end
addDatabaseAccess(grant:, database:) click to toggle source

ACCESS ==

# File lib/User.rb, line 130
def addDatabaseAccess(grant:, database:)
  satisfy_category?(grant, ["rw", "ro", "none"])
  satisfy_class?(database, [Arango::Database, String])
  database = database.name if database.is_a?(Arango::Database)
  body = {"grant": grant}
  result = @server.request("PUT", "_api/user/#{@name}/database/#{database}",
    body: body)
  return return_directly?(result) ? result : result[database.to_sym]
end
assign_attributes(result)
Alias for: body=
body=(result) click to toggle source
# File lib/User.rb, line 49
def body=(result)
  @body   = result
  @password = result[:password] || @password
  @name   = result[:user]   || @name
  @extra  = result[:extra]  || @extra
  @active = result[:active].nil? ? @active : result[:active]
  if @server.active_cache && @cache_name.nil?
    @cache_name = @name
    @server.cache.save(:user, @cache_name, self)
  end
end
Also aliased as: assign_attributes
collectionAccess(database:, collection:) click to toggle source
# File lib/User.rb, line 187
def collectionAccess(database:, collection:)
  satisfy_class?(database, [Arango::Database, String])
  satisfy_class?(collection, [Arango::Collection, String])
  database = database.name     if database.is_a?(Arango::Database)
  collection = collection.name if collection.is_a?(Arango::Collection)
  result = @server.request("GET", "_api/user/#{@name}/database/#{database}/#{collection}",
    body: body)
  return return_directly?(result) ? result : result[:result]
end
create(password: @password, active: @active, extra: @extra) click to toggle source

USER ACTION ==

# File lib/User.rb, line 85
def create(password: @password, active: @active, extra: @extra)
  body = {
    "user": @name,
    "passwd": password,
    "extra": extra,
    "active": active
  }
  result = @server.request("POST", "_api/user", body: body)
  return_element(result)
end
database(database)
Alias for: []
databaseAccess(database:) click to toggle source
# File lib/User.rb, line 180
def databaseAccess(database:)
  satisfy_class?(database, [Arango::Database, String])
  database = database.name if database.is_a?(Arango::Database)
  result = @server.request("GET", "_api/user/#{@name}/database/#{database}")
  return return_directly?(result) ? result : result[:result]
end
databases(full: nil)
Alias for: listAccess
destroy() click to toggle source
# File lib/User.rb, line 123
def destroy
  result = @server.request("DELETE", "_api/user/#{@name}")
  return return_directly?(result) ? result : true
end
grant(database:) click to toggle source
# File lib/User.rb, line 140
def grant(database:)
  addDatabaseAccess(grant: "rw", database: database)
end
listAccess(full: nil) click to toggle source
# File lib/User.rb, line 173
def listAccess(full: nil)
  query = {"full": full}
  result = @server.request("GET", "_api/user/#{@name}/database", query: query)
  return return_directly?(result) ? result : result[:result]
end
Also aliased as: databases
replace(password: @password, active: @active, extra: @extra) click to toggle source
# File lib/User.rb, line 101
def replace(password: @password, active: @active, extra: @extra)
  body = {
    "passwd": password,
    "active": active,
    "extra": extra
  }
  result = @server.request("PUT", "_api/user/#{@name}", body: body)
  @password = password
  return_element(result)
end
retrieve() click to toggle source
# File lib/User.rb, line 96
def retrieve
  result = @server.request("GET", "_api/user/#{@name}", body: body)
  return_element(result)
end
revoke(database:)
revokeCollectionAccess(database:, collection:) click to toggle source
# File lib/User.rb, line 164
def revokeCollectionAccess(database:, collection:)
  satisfy_class?(database, [Arango::Database, String])
  satisfy_class?(collection, [Arango::Collection, String])
  database = database.name     if database.is_a?(Arango::Database)
  collection = collection.name if collection.is_a?(Arango::Collection)
  result = @server.request("DELETE", "_api/user/#{@name}/database/#{database}/#{collection}")
  return return_directly?(result) ? result : true
end
revokeDatabaseAccess(database:) click to toggle source
# File lib/User.rb, line 156
def revokeDatabaseAccess(database:)
  satisfy_class?(database, [Arango::Database, String])
  database = database.name if database.is_a?(Arango::Database)
  result = @server.request("DELETE", "_api/user/#{@name}/database/#{database}")
  return return_directly?(result) ? result : true
end
Also aliased as: revoke
to_h() click to toggle source

TO HASH ===

# File lib/User.rb, line 64
def to_h
  {
    "user": @name,
    "extra": @extra,
    "active": @active,
    "cache_name": @cache_name,
    "server": @server.base_uri
  }.delete_if{|k,v| v.nil?}
end
update(password: @password, active: @active, extra: @extra) click to toggle source
# File lib/User.rb, line 112
def update(password: @password, active: @active, extra: @extra)
  body = {
    "passwd": password,
    "active": active,
    "extra": extra
  }
  result = @server.request("PATCH", "_api/user/#{@name}", body: body)
  @password = password
  return_element(result)
end