class Arango::User
Attributes
body[R]
cache_name[R]
password[W]
server[R]
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
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
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
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
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
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