Class: Symgate::Auth::Client
- Defined in:
- lib/symgate/auth/client.rb
Overview
client for the Symgate authentication system
Instance Attribute Summary
Attributes inherited from Client
#account, #data_required_error_retries, #endpoint, #key, #password, #savon_client, #savon_opts, #token, #user, #wsdl
Instance Method Summary collapse
-
#add_group_language(group, language) ⇒ Object
Adds a language to the specified group.
-
#authenticate(user_to_impersonate = nil) ⇒ Object
Authenticates a user and returns a token.
-
#create_group(group_id) ⇒ Object
Creates a new group.
-
#create_user(user, password) ⇒ Object
Creates a new user.
-
#destroy_group(group_id) ⇒ Object
Destroys an existing group.
-
#destroy_user(user_id) ⇒ Object
Destroys a user.
-
#enumerate_group_languages(group_id) ⇒ Object
Lists the allowed languages for the specified group.
-
#enumerate_groups ⇒ Object
Returns a list of groups for the current symgate account.
-
#enumerate_languages ⇒ Object
Lists the allowed languages for the currently authenticated user.
-
#enumerate_users(group_id) ⇒ Object
Returns a list of users for the specified group).
-
#move_user(old_user_id, new_user_id) ⇒ Object
Moves a user between groups.
-
#query_group_language(group_id, language) ⇒ Object
Queries whether a language is assigned to a group.
-
#query_language(language) ⇒ Object
Queries whether a language is assigned to the currently authenticated user.
-
#remove_group_language(group, language) ⇒ Object
Removes a language from the specified group.
-
#rename_group(old_group_id, new_group_id) ⇒ Object
Renames a group.
-
#rename_user(old_user_id, new_user_id) ⇒ Object
Renames a user.
-
#set_user_password(user_id, password) ⇒ Object
Sets the password for a user.
-
#update_user(user) ⇒ Object
Updates a user.
Methods inherited from Client
Constructor Details
This class inherits a constructor from Symgate::Client
Instance Method Details
#add_group_language(group, language) ⇒ Object
Adds a language to the specified group
This enables users within the group to use the Symboliser in that language.
Attributes
-
group
- The ID of the group to add the language to (String) -
language
- The cml language to enable (String)
Returns
Returns ‘OK’ if successful or ‘Exists’ if the language is already assigned to the account (String)
Supported authentication types
-
account/key
278 279 280 281 282 |
# File 'lib/symgate/auth/client.rb', line 278 def add_group_language(group, language) savon_request(:add_group_language) do |soap| soap.(groupid: group, language: language) end.body[:add_group_language_response] end |
#authenticate(user_to_impersonate = nil) ⇒ Object
Authenticates a user and returns a token
This optionally provides a token which allows you to ‘impersonate’ a user (i.e. use the API as if you were logged on as that user)
Raises a Symgate::Error on error (e.g. authentication fails)
Attributes
-
user_to_impersonate
(optional) - The ID (String) of the user to impersonate
Returns
A token, used for further calls to the client (String)
-
account/key (requires
user_to_impersonate
) -
user (cannot use
user_to_impersonate
)
253 254 255 256 257 258 259 |
# File 'lib/symgate/auth/client.rb', line 253 def authenticate(user_to_impersonate = nil) r = savon_request(:authenticate) do |soap| soap.(userid: user_to_impersonate) if user_to_impersonate end.body[:authenticate_response] r ? r[:authtoken] : nil end |
#create_group(group_id) ⇒ Object
Creates a new group.
Raises a Symgate::Error on failure
Attributes
-
group_id
- The ID of the new group to create (String)
Supported authentication types
-
account/key
35 36 37 38 39 |
# File 'lib/symgate/auth/client.rb', line 35 def create_group(group_id) savon_request(:create_group, returns_error_string: true) do |soap| soap.(groupid: group_id) end end |
#create_user(user, password) ⇒ Object
Creates a new user
Raises a Symgate::Error on failure (e.g. the user
is invalid, or the group specified in the User object does not exist)
Attributes
-
user
- A Symgate::Auth::User describing the new user -
password
- The password for the new user (String)
Supported authentication types
-
account/key
-
user (with
is_group_admin
)
119 120 121 122 123 124 |
# File 'lib/symgate/auth/client.rb', line 119 def create_user(user, password) savon_request(:create_user, returns_error_string: true) do |soap| soap.(password: password) user.to_soap(soap[:message]) end end |
#destroy_group(group_id) ⇒ Object
Destroys an existing group
IMPORTANT: This will permanently delete the group, along with all associated users, wordlists and metadata. Can’t be undone.
Raises a Symgate::Error on failure
Attributes
-
group_id
- The ID of the new group to create (String)
Supported authentication types
-
account/key
55 56 57 58 59 |
# File 'lib/symgate/auth/client.rb', line 55 def destroy_group(group_id) savon_request(:destroy_group, returns_error_string: true) do |soap| soap.(groupid: group_id) end end |
#destroy_user(user_id) ⇒ Object
Destroys a user
IMPORTANT: This will irreversibly destroy all wordlists and metadata belonging to the user
Attributes
-
user_id
- The ID of the user for whom the password is to be changed
Supported authentication types
-
account/key
-
user (with
is_group_admin
)
230 231 232 233 234 |
# File 'lib/symgate/auth/client.rb', line 230 def destroy_user(user_id) savon_request(:destroy_user, returns_error_string: true) do |soap| soap.(userid: user_id) end end |
#enumerate_group_languages(group_id) ⇒ Object
Lists the allowed languages for the specified group
Attributes
-
group_id
- The ID of the group (String)
Returns
Returns an array of cml languages as strings
Supported authentication types
-
account/key
320 321 322 323 324 325 326 327 |
# File 'lib/symgate/auth/client.rb', line 320 def enumerate_group_languages(group_id) resp = savon_request(:enumerate_group_languages) { |soap| soap.(groupid: group_id) } Symgate::Client.savon_array( resp.body[:enumerate_group_languages_response], :language ) end |
#enumerate_groups ⇒ Object
Returns a list of groups for the current symgate account
Returns
An array of group ids, as strings
Supported authentication types
-
account/key
17 18 19 20 21 22 |
# File 'lib/symgate/auth/client.rb', line 17 def enumerate_groups Symgate::Client.savon_array( savon_request(:enumerate_groups).body[:enumerate_groups_response], :groupid ) end |
#enumerate_languages ⇒ Object
Lists the allowed languages for the currently authenticated user
Returns
Returns an array of cml languages as strings
Supported authentication types
-
user
358 359 360 361 362 363 364 365 |
# File 'lib/symgate/auth/client.rb', line 358 def enumerate_languages resp = savon_request(:enumerate_languages) Symgate::Client.savon_array( resp.body[:enumerate_languages_response], :language ) end |
#enumerate_users(group_id) ⇒ Object
Returns a list of users for the specified group)
Attributes
-
group_id
- The ID of the group (String)
Returns
An array of Symgate::Auth::User objects
Supported authentication types
-
account/key
95 96 97 98 99 100 101 102 103 |
# File 'lib/symgate/auth/client.rb', line 95 def enumerate_users(group_id) resp = savon_request(:enumerate_users) { |soap| soap.(groupid: group_id) } Symgate::Client.savon_array( resp.body[:enumerate_users_response], :user, Symgate::Auth::User ) end |
#move_user(old_user_id, new_user_id) ⇒ Object
Moves a user between groups
Moves a user from one group to another. The group part of the user ID should be changed.
Raises a Symgate::Error on failure (e.g. the new_user_id
is already taken or the user with old_user_id
does not exist)
Attributes
-
old_user_id
- The ID of the user to move, in ‘group_id/username’ format (String) -
new_user_id
- The new ID of the renamed user (String)
Example
auth_client.move_user('group_1/username', 'group_2/username')
Supported authentication types
-
account/key
189 190 191 192 193 |
# File 'lib/symgate/auth/client.rb', line 189 def move_user(old_user_id, new_user_id) savon_request(:move_user, returns_error_string: true) do |soap| soap.(old_user_id: old_user_id, new_user_id: new_user_id) end end |
#query_group_language(group_id, language) ⇒ Object
Queries whether a language is assigned to a group
Attributes
-
group
- The ID of the group (String) -
language
- The cml language to query (String)
Returns
Returns true if the user has the language assigned, otherwise false (Boolean)
Supported authentication types
-
account/key
343 344 345 346 347 |
# File 'lib/symgate/auth/client.rb', line 343 def query_group_language(group_id, language) savon_request(:query_group_language) do |soap| soap.(groupid: group_id, language: language) end.body[:query_group_language_response] end |
#query_language(language) ⇒ Object
Queries whether a language is assigned to the currently authenticated user
Attributes
-
language
- The cml language to query (String)
Returns
Returns true if the user has the language assigned, otherwise false (Boolean)
Supported authentication types
-
user
380 381 382 383 |
# File 'lib/symgate/auth/client.rb', line 380 def query_language(language) savon_request(:query_language) { |soap| soap.(language: language) } .body[:query_language_response] end |
#remove_group_language(group, language) ⇒ Object
Removes a language from the specified group
This prevents users within the group to use the Symboliser in that language.
Attributes
-
group
- The ID of the group to remove the language from(String) -
language
- The cml language to disable (String)
Returns
Returns ‘OK’ if successful or ‘NotExist’ if the language is not assigned to the account (String)
Supported authentication types
-
account/key
301 302 303 304 305 |
# File 'lib/symgate/auth/client.rb', line 301 def remove_group_language(group, language) savon_request(:remove_group_language) do |soap| soap.(groupid: group, language: language) end.body[:remove_group_language_response] end |
#rename_group(old_group_id, new_group_id) ⇒ Object
Renames a group
This will require all users to use the new group_id as part of their login username in future.
Raises a Symgate::Error on failure (e.g. the new_group_id
is invalid)
Attributes
-
old_group_id
- The ID of the group to rename (String) -
new_group_id
- The new ID for the renamed group (String)
Supported authentication types
-
account/key
76 77 78 79 80 |
# File 'lib/symgate/auth/client.rb', line 76 def rename_group(old_group_id, new_group_id) savon_request(:rename_group, returns_error_string: true) do |soap| soap.(old_groupid: old_group_id, new_groupid: new_group_id) end end |
#rename_user(old_user_id, new_user_id) ⇒ Object
Renames a user
The user cannot be renamed from one group to another - the group part of the user id should remain the same.
Raises a Symgate::Error on failure (e.g. the new_user_id
is already taken or the user with old_user_id
does not exist)
Attributes
-
old_user_id
- The ID of the user to rename, in ‘group_id/username’ format (String) -
new_user_id
- The new ID of the renamed user (String)
Supported authentication types
-
account/key
-
user (with
is_group_admin
)
163 164 165 166 167 |
# File 'lib/symgate/auth/client.rb', line 163 def rename_user(old_user_id, new_user_id) savon_request(:rename_user, returns_error_string: true) do |soap| soap.(old_user_id: old_user_id, new_user_id: new_user_id) end end |
#set_user_password(user_id, password) ⇒ Object
Sets the password for a user
Note that when authenticating as a user without the is_group_admin
permission you can only change the password for yourself.
Raises a Symgate::Error on failure (e.g. the user identified by user_id
does not exist, or you do not have sufficient permissions to update the password.)
Attributes
-
user_id
- The ID of the user for whom the password is to be changed
Supported authentication types
-
account/key
-
user
211 212 213 214 215 |
# File 'lib/symgate/auth/client.rb', line 211 def set_user_password(user_id, password) savon_request(:set_user_password, returns_error_string: true) do |soap| soap.(userid: user_id, password: password) end end |
#update_user(user) ⇒ Object
Updates a user
Currently this can only be used to set the is_group_admin
member of the user
object
Attributes
-
user
- The updated Symgate::Auth::User object
Supported authentication types
-
account/key
-
user (with
is_group_admin
)
139 140 141 142 143 144 |
# File 'lib/symgate/auth/client.rb', line 139 def update_user(user) savon_request(:update_user, returns_error_string: true) do |soap| soap.({}) user.to_soap(soap[:message]) end end |