Class: Arango::User
- Inherits:
-
Object
- Object
- Arango::User
- Includes:
- Helper::Satisfaction
- Defined in:
- lib/arango/user.rb
Overview
Arango User
Instance Attribute Summary collapse
-
#active ⇒ Object
Returns the value of attribute active.
-
#extra ⇒ Object
Returns the value of attribute extra.
-
#name ⇒ Object
Returns the value of attribute name.
-
#password ⇒ Object
writeonly
Sets the attribute password.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
Class Method Summary collapse
-
.all(server: Arango.current_server) ⇒ Array<Arango::User>
Retrieves all users.
-
.create(name:, password: "", extra: {}, active: nil, server: Arango.current_server) ⇒ Arango::User
Create new user.
-
.drop(name:, server: Arango.current_server) ⇒ Arango::Result
Delete user by name.
-
.exists?(name:, server: Arango.current_server) ⇒ Boolean
Check if user exists.
-
.get(name:, server: Arango.current_server) ⇒ Arango::User
Get user by name.
-
.list(server: Arango.current_server) ⇒ Array
List users # @param server [Arango::Server], defaults to current_server.
Instance Method Summary collapse
-
#add_collection_access(grant:, database:, collection:) ⇒ Object
Grant access to database collection.
-
#add_database_access(grant:, database:) ⇒ Object
Grant access to database.
-
#collection_access(database:, collection:) ⇒ Object
Get user access level for database collection.
- #create ⇒ Object
-
#database_access(database:) ⇒ Object
Get user access level for database.
-
#grant(database:) ⇒ Object
Grant read-write access to database.
-
#initialize(server:, password: "", name:, extra: {}, active: nil) ⇒ User
constructor
Create new user.
-
#list_access(full: nil) ⇒ Object
(also: #databases)
List databases a user has access to @param: full.
-
#replace(password: @password, active: @active, extra: @extra) ⇒ Object
Replace user record.
-
#revoke_collection_access(database:, collection:) ⇒ Object
Revoke user access to database collection.
-
#revoke_database_access(database:) ⇒ Object
(also: #revoke)
Revoke user access to database.
- #update(password: @password, active: @active, extra: @extra) ⇒ Object
Methods included from Helper::Satisfaction
#satisfy_category?, #satisfy_class?, #satisfy_class_or_string?, #satisfy_module?, #satisfy_module_or_nil?, #satisfy_module_or_string?, #warning_deprecated
Constructor Details
#initialize(server:, password: "", name:, extra: {}, active: nil) ⇒ User
Create new user
93 94 95 96 97 98 99 |
# File 'lib/arango/user.rb', line 93 def initialize(server:, password: "", name:, extra: {}, active: nil) @server = server @password = password @name = name @extra = extra @active = active end |
Instance Attribute Details
#active ⇒ Object
Returns the value of attribute active.
63 64 65 |
# File 'lib/arango/user.rb', line 63 def active @active end |
#extra ⇒ Object
Returns the value of attribute extra.
63 64 65 |
# File 'lib/arango/user.rb', line 63 def extra @extra end |
#name ⇒ Object
Returns the value of attribute name.
63 64 65 |
# File 'lib/arango/user.rb', line 63 def name @name end |
#password=(value) ⇒ Object (writeonly)
Sets the attribute password
64 65 66 |
# File 'lib/arango/user.rb', line 64 def password=(value) @password = value end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
65 66 67 |
# File 'lib/arango/user.rb', line 65 def server @server end |
Class Method Details
.all(server: Arango.current_server) ⇒ Array<Arango::User>
Retrieves all users.
12 13 14 15 |
# File 'lib/arango/user.rb', line 12 def all(server: Arango.current_server) result = Arango::Requests::User::List.execute(server: server) result.map { |u| self.new(server: server, **u) } end |
.create(name:, password: "", extra: {}, active: nil, server: Arango.current_server) ⇒ Arango::User
Create new user
23 24 25 |
# File 'lib/arango/user.rb', line 23 def create(name:, password: "", extra: {}, active: nil, server: Arango.current_server) self.new.create(server: server, password: password, extra: extra, active: active) end |
.drop(name:, server: Arango.current_server) ⇒ Arango::Result
Delete user by name
48 49 50 |
# File 'lib/arango/user.rb', line 48 def drop(name:, server: Arango.current_server) Arango::Requests::User::Delete.execute(server: server, args: { user: name }) end |
.exists?(name:, server: Arango.current_server) ⇒ Boolean
Check if user exists
56 57 58 59 60 |
# File 'lib/arango/user.rb', line 56 def exists?(name:, server: Arango.current_server) !!Arango::Requests::User::Get.execute(server: server, args: { user: name }) rescue false end |
.get(name:, server: Arango.current_server) ⇒ Arango::User
Get user by name
31 32 33 34 |
# File 'lib/arango/user.rb', line 31 def get(name:, server: Arango.current_server) result = Arango::Requests::User::Get.execute(server: server, args: { user: name }) self.new(server: server, **result) end |
.list(server: Arango.current_server) ⇒ Array
List users # @param server [Arango::Server], defaults to Arango.current_server
39 40 41 42 |
# File 'lib/arango/user.rb', line 39 def list(server: Arango.current_server) result = Arango::Requests::User::List.execute(server: server) result.map { |u| u.name } end |
Instance Method Details
#add_collection_access(grant:, database:, collection:) ⇒ Object
Grant access to database collection
136 137 138 139 140 141 142 143 144 145 |
# File 'lib/arango/user.rb', line 136 def add_collection_access(grant:, database:, collection:) satisfy_category?(grant, %w[rw ro none]) satisfy_class_or_string?(database, Arango::Database) satisfy_module_or_string?(collection, Arango::DocumentCollection::Mixin) database = database.name if database.is_a?(Arango::Database) collection = collection.name if collection.is_a?(Arango::DocumentCollection) body = { grant: grant } result = Arango::Requests::User::SetCollectionAccessLevel.execute(user: self.name, database: database, collection: collection, body: body) return return_directly?(result) ? result : result[:"#{database}/#{collection}"] end |
#add_database_access(grant:, database:) ⇒ Object
Grant access to database
116 117 118 119 120 121 122 123 |
# File 'lib/arango/user.rb', line 116 def add_database_access(grant:, database:) satisfy_category?(grant, %w[rw ro none]) satisfy_class_or_string?(database, Arango::Database) database = database.name if database.is_a?(Arango::Database) body = { grant: grant } result = Arango::Requests::User::SetDatabaseAccessLevel.execute(user: self.name, database: database, body: body) return return_directly?(result) ? result : result[database.to_sym] end |
#collection_access(database:, collection:) ⇒ Object
Get user access level for database collection
190 191 192 193 194 195 196 197 |
# File 'lib/arango/user.rb', line 190 def collection_access(database:, collection:) satisfy_class_or_string?(database, Arango::Database) satisfy_module_or_string?(collection, Arango::DocumentCollection::Mixin) database = database.name if database.is_a?(Arango::Database) collection = collection.name if collection.is_a?(Arango::DocumentCollection) result = Arango::Requests::User::GetCollectionAccessLevel.execute(name: self.name, database: database, collection: collection) return return_directly?(result) ? result : result[:result] end |
#create ⇒ Object
101 102 103 104 105 106 107 108 109 110 |
# File 'lib/arango/user.rb', line 101 def create body = { user: name, passwd: password, extra: extra, active: active } Arango::Requests::User::Create.new(server: server, body: body).execute self end |
#database_access(database:) ⇒ Object
Get user access level for database
180 181 182 183 184 185 |
# File 'lib/arango/user.rb', line 180 def database_access(database:) satisfy_class_or_string?(database, Arango::Database) database = database.name if database.is_a?(Arango::Database) result = Arango::Requests::User::GetDatabaseAccessLevel.execute(name: self.name, database: database) return return_directly?(result) ? result : result[:result] end |
#grant(database:) ⇒ Object
Grant read-write access to database
127 128 129 |
# File 'lib/arango/user.rb', line 127 def grant(database:) add_database_access(grant: "rw", database: database) end |
#list_access(full: nil) ⇒ Object Also known as: databases
List databases a user has access to @param: full
171 172 173 174 175 |
# File 'lib/arango/user.rb', line 171 def list_access(full: nil) query = { full: full } result = Arango::Requests::User::ListDatabases.execute(body: query) return return_directly?(result) ? result : result[:result] end |
#replace(password: @password, active: @active, extra: @extra) ⇒ Object
Replace user record
70 71 72 73 74 75 76 77 78 79 |
# File 'lib/arango/user.rb', line 70 def replace(password: @password, active: @active, extra: @extra) body = { passwd: password, active: active, extra: extra } result = Arango::Requests::User::Replace.execute(body: body) @password = password return_element(result) end |
#revoke_collection_access(database:, collection:) ⇒ Object
Revoke user access to database collection
160 161 162 163 164 165 166 167 |
# File 'lib/arango/user.rb', line 160 def revoke_collection_access(database:, collection:) satisfy_class_or_string?(database, Arango::Database) satisfy_module_or_string?(collection, Arango::DocumentCollection) database = database.name if database.is_a?(Arango::Database) collection = collection.name if collection.is_a?(Arango::DocumentCollection) result = Arango::Requests::User::ClearCollectionAccessLevel.execute(user: self.name, database: database, collection: collection) return return_directly?(result) ? result : true end |
#revoke_database_access(database:) ⇒ Object Also known as: revoke
Revoke user access to database
149 150 151 152 153 154 |
# File 'lib/arango/user.rb', line 149 def revoke_database_access(database:) satisfy_class_or_string?(database, Arango::Database) database = database.name if database.is_a?(Arango::Database) result = Arango::Requests::User::ClearDatabaseAccessLevel.execute(user: self.name, database: database) return return_directly?(result) ? result : true end |
#update(password: @password, active: @active, extra: @extra) ⇒ Object
81 82 83 84 85 86 87 88 89 90 |
# File 'lib/arango/user.rb', line 81 def update(password: @password, active: @active, extra: @extra) body = { passwd: password, active: active, extra: extra } result = Arango::Requests::User::Update.execute(body: body) @password = password return_element(result) end |