2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
|
# File 'lib/gooddata/models/project.rb', line 2174
def resolve_roles(login, desired_roles, options = {})
user = if login.is_a?(String) && login.include?('@')
USER_ACCOUNT_PATH + login
elsif login.is_a?(String)
login
elsif login.is_a?(Hash) && login[:login]
USER_ACCOUNT_PATH + login[:login]
elsif login.is_a?(Hash) && login[:uri]
login[:uri]
elsif login.respond_to?(:uri) && login.uri
login.uri
elsif login.respond_to?(:login) && login.login
USER_ACCOUNT_PATH + login.login
else
fail "Unsupported user specification #{login}"
end
role_list = options[:roles] || roles
desired_roles = Array(desired_roles)
roles = desired_roles.map do |role_name|
role = get_role(role_name, role_list)
fail ArgumentError, "Invalid role '#{role_name}' specified for user '#{GoodData::Helpers.last_uri_part(user)}'" if role.nil?
role.uri
end
[user, roles]
end
|