Class: ResourceSpace::User

Inherits:
Object
  • Object
show all
Defined in:
lib/resourcespace/user.rb

Overview

User management interface for ResourceSpace API

Examples:

users = client.users

# Get user list
all_users = users.get_users

# Check permissions
can_edit = users.check_permission("r")

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ User

Initialize the user interface

Parameters:

  • client (Client)

    ResourceSpace client instance



21
22
23
# File 'lib/resourcespace/user.rb', line 21

def initialize(client)
  @client = client
end

Instance Attribute Details

#clientClient (readonly)

Returns the ResourceSpace client.

Returns:

  • (Client)

    the ResourceSpace client



16
17
18
# File 'lib/resourcespace/user.rb', line 16

def client
  @client
end

Instance Method Details

#admin?Boolean

Check if current user is an admin

Returns:

  • (Boolean)

    true if user is admin



135
136
137
# File 'lib/resourcespace/user.rb', line 135

def admin?
  check_permission("a")
end

#can_access_resource?(resource_id) ⇒ Boolean

Check if user can access a specific resource

Parameters:

  • resource_id (Integer)

    resource ID

Returns:

  • (Boolean)

    true if user can access the resource



84
85
86
87
88
89
90
91
# File 'lib/resourcespace/user.rb', line 84

def can_access_resource?(resource_id)
  begin
    access_level = client.resources.get_resource_access(resource_id)
    access_level >= 0 # 0 = open access, -1 = no access
  rescue NotFoundError, AuthorizationError
    false
  end
end

#can_download?Boolean

Check if current user can download files

Returns:

  • (Boolean)

    true if user can download files



163
164
165
# File 'lib/resourcespace/user.rb', line 163

def can_download?
  check_permission("d")
end

#can_edit_resource?(resource_id) ⇒ Boolean

Check if user can edit a specific resource

Parameters:

  • resource_id (Integer)

    resource ID

Returns:

  • (Boolean)

    true if user can edit the resource



97
98
99
# File 'lib/resourcespace/user.rb', line 97

def can_edit_resource?(resource_id)
  client.resources.edit_access?(resource_id)
end

#can_edit_resources?Boolean

Check if current user can edit resources

Returns:

  • (Boolean)

    true if user can edit resources



170
171
172
# File 'lib/resourcespace/user.rb', line 170

def can_edit_resources?
  check_permission("e")
end

#can_manage_collections?Boolean

Check if current user can manage collections

Returns:

  • (Boolean)

    true if user can manage collections



149
150
151
# File 'lib/resourcespace/user.rb', line 149

def can_manage_collections?
  check_permission("k")
end

#can_manage_users?Boolean

Check if current user can manage users

Returns:

  • (Boolean)

    true if user can manage users



142
143
144
# File 'lib/resourcespace/user.rb', line 142

def can_manage_users?
  check_permission("u")
end

#can_upload?Boolean

Check if current user can upload files

Returns:

  • (Boolean)

    true if user can upload files



156
157
158
# File 'lib/resourcespace/user.rb', line 156

def can_upload?
  check_permission("c")
end

#capabilitiesHash

Get user capabilities summary

Returns:

  • (Hash)

    summary of user capabilities



177
178
179
180
181
182
183
184
185
186
# File 'lib/resourcespace/user.rb', line 177

def capabilities
  {
    admin: admin?,
    manage_users: can_manage_users?,
    manage_collections: can_manage_collections?,
    upload: can_upload?,
    download: can_download?,
    edit_resources: can_edit_resources?
  }
end

#check_permission(permission) ⇒ Boolean

Check if current user has a permission

Parameters:

  • permission (String)

    permission to check

Returns:

  • (Boolean)

    true if user has permission



44
45
46
47
# File 'lib/resourcespace/user.rb', line 44

def check_permission(permission)
  response = client.get("checkperm", { param1: permission })
  response == true || response == "true" || response == 1 || response == "1"
end

#check_permissions(permissions) ⇒ Hash

Check multiple permissions at once

Parameters:

  • permissions (Array<String>)

    array of permissions to check

Returns:

  • (Hash)

    hash of permission => boolean pairs



116
117
118
119
120
121
122
# File 'lib/resourcespace/user.rb', line 116

def check_permissions(permissions)
  result = {}
  Array(permissions).each do |permission|
    result[permission] = check_permission(permission)
  end
  result
end

#current_userHash

Get current user information

Returns:

  • (Hash)

    current user data



104
105
106
107
108
109
110
# File 'lib/resourcespace/user.rb', line 104

def current_user
  # Note: ResourceSpace API doesn't have a direct "current user" endpoint
  # This would typically be implemented by getting user info based on the authenticated user
  # For now, we'll use the username from configuration and search for it
  users = get_users
  users.find { |user| user["username"] == client.config.user }
end

#get_admin_usersArray

Get users with administrative privileges

Returns:

  • (Array)

    admin users



127
128
129
130
# File 'lib/resourcespace/user.rb', line 127

def get_admin_users
  # Typically admin users have 'a' permission
  get_users_by_permission("a")
end

#get_user_message(message_id) ⇒ Hash

Get user message

Parameters:

  • message_id (Integer)

    message ID

Returns:

  • (Hash)

    message details



76
77
78
# File 'lib/resourcespace/user.rb', line 76

def get_user_message(message_id)
  client.get("get_user_message", { param1: message_id.to_s })
end

#get_usersArray

Get list of users

Returns:

  • (Array)

    array of user data



28
29
30
# File 'lib/resourcespace/user.rb', line 28

def get_users
  client.get("get_users")
end

#get_users_by_permission(permission) ⇒ Array

Get users by permission

Parameters:

  • permission (String)

    permission to check

Returns:

  • (Array)

    users with the specified permission



36
37
38
# File 'lib/resourcespace/user.rb', line 36

def get_users_by_permission(permission)
  client.get("get_users_by_permission", { param1: permission })
end

#login(username, password) ⇒ String

Login and get a session key

Parameters:

  • username (String)

    username

  • password (String)

    password

Returns:

  • (String)

    session key for subsequent requests



54
55
56
57
58
59
60
61
62
# File 'lib/resourcespace/user.rb', line 54

def (username, password)
  response = client.get("login", {
    param1: username,
    param2: password
  })

  # The response should be a session key
  response.is_a?(Hash) ? response["key"] || response["session_key"] : response
end

#mark_email_as_invalid(email) ⇒ Hash

Mark an email as invalid

Parameters:

  • email (String)

    email address to mark as invalid

Returns:

  • (Hash)

    response



68
69
70
# File 'lib/resourcespace/user.rb', line 68

def mark_email_as_invalid(email)
  client.post("mark_email_as_invalid", { param1: email })
end