onelogin 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@
6
6
 
7
7
  <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
8
8
  <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
9
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
9
10
  </head>
10
11
 
11
12
  <body>
@@ -2,21 +2,21 @@
2
2
 
3
3
  <h1>Users</h1>
4
4
 
5
- <table class="list">
5
+ <table class="table">
6
6
  <thead>
7
7
  <tr>
8
- <th>Name</th>
9
- <th>Email</th>
10
- <th>Phone</th>
11
- <th>Custom Field</th>
12
- <th colspan="2"></th>
8
+ <th scope="col">Name</th>
9
+ <th scope="col">Email</th>
10
+ <th scope="col">Phone</th>
11
+ <th scope="col">Custom Field</th>
12
+ <th scope="col" colspan="2"></th>
13
13
  </tr>
14
14
  </thead>
15
15
 
16
16
  <tbody>
17
17
  <% @users.each do |user| %>
18
18
  <tr>
19
- <td><%= user.firstname %> <%= user.lastname %></td>
19
+ <td scope="row"><%= user.firstname %> <%= user.lastname %></td>
20
20
  <td><%= user.email %></td>
21
21
  <td><%= user.phone %></td>
22
22
  <td><%= user.custom_attributes["custom_field"] if user.custom_attributes.is_a?(Hash) %></td>
@@ -5,8 +5,10 @@
5
5
 
6
6
  <h2>Profile</h2>
7
7
 
8
+ <ul class="list-group">
8
9
  <%@user.instance_values.symbolize_keys.each do |k, v|%>
9
- <div class="row">
10
- <span><%= k%>:</span> <%= v%>
11
- </div>
12
- <%end%>
10
+ <li class="list-group-item">
11
+ <b><%= k%>:</b> <%= v%>
12
+ </li>
13
+ <%end%>
14
+ </ul>
@@ -4,6 +4,8 @@ Rails.application.routes.draw do
4
4
  post 'login', to: 'sessions#new', as: 'new_session'
5
5
  get 'logout', to: 'sessions#destroy', as: 'destroy_session'
6
6
  post 'verify_mfa', to: 'sessions#verify', as: 'verify_mfa'
7
+ post 'forgot_password', to: 'sessions#forgot_password', as: 'forgot_password'
8
+ post 'reset_password', to: 'sessions#reset_password', as: 'reset_password'
7
9
 
8
10
  get 'dashboard', to: 'dashboard#index'
9
11
 
@@ -80,8 +80,12 @@ module OneLogin
80
80
  result = false
81
81
  begin
82
82
  content = JSON.parse(response.body)
83
- if content && content.has_key?('status') && content['status'].has_key?('type') && content['status']['type'] == "success"
84
- result = true
83
+ if content
84
+ if content.has_key?('status') && content['status'].has_key?('type') && content['status']['type'] == "success"
85
+ result = true
86
+ elsif content.has_key?('success') && content['success']
87
+ result = true
88
+ end
85
89
  end
86
90
  rescue Exception => e
87
91
  result = false
@@ -134,8 +138,9 @@ module OneLogin
134
138
  end
135
139
 
136
140
  def authorized_headers(bearer = true)
141
+ # Removed the ":"
137
142
  authorization = if bearer
138
- "bearer:#{@access_token}"
143
+ "bearer #{@access_token}"
139
144
  else
140
145
  "client_id:#{@client_id},client_secret:#{@client_secret}"
141
146
  end
@@ -904,7 +909,7 @@ module OneLogin
904
909
 
905
910
  # Deletes an user
906
911
  #
907
- # @param user_id [Integer] Id of the user to be logged out
912
+ # @param user_id [Integer] Id of the user to be removed
908
913
  #
909
914
  # @return [Boolean] if the action succeed
910
915
  #
@@ -1826,6 +1831,452 @@ module OneLogin
1826
1831
  apps
1827
1832
  end
1828
1833
 
1834
+ #####################
1835
+ # Privilege Methods #
1836
+ #####################
1837
+
1838
+ # Gets a list of the Privileges created in an account.
1839
+ #
1840
+ # @return [Array] list of privilege objects
1841
+ #
1842
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/list-privileges List Privileges documentation}
1843
+ def get_privileges()
1844
+ clean_error
1845
+ prepare_token
1846
+
1847
+ begin
1848
+
1849
+ url = url_for(LIST_PRIVILEGES_URL)
1850
+
1851
+ privileges = []
1852
+ response = self.class.get(
1853
+ url,
1854
+ headers: authorized_headers
1855
+ )
1856
+
1857
+ if response.code == 200
1858
+ json_data = JSON.parse(response.body)
1859
+ if !json_data.empty?
1860
+ json_data.each do |data|
1861
+ privileges << OneLogin::Api::Models::Privilege.new(data)
1862
+ end
1863
+ end
1864
+ return privileges
1865
+ else
1866
+ @error = extract_status_code_from_response(response)
1867
+ @error_description = extract_error_message_from_response(response)
1868
+ end
1869
+ rescue Exception => e
1870
+ @error = '500'
1871
+ @error_description = e.message
1872
+ end
1873
+
1874
+ nil
1875
+ end
1876
+
1877
+ # Creates a Privilege
1878
+ #
1879
+ # @param name [string] The name of the privilege.
1880
+ # @param version [string] The version for the privilege schema. Set to 2018-05-18.
1881
+ # @param statements [Array] A list of statements. Statement object or a dict with the keys Effect, Action and Scope
1882
+ #
1883
+ # @return [Privilege] the created privilege
1884
+ #
1885
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/create-privilege Create Privilege documentation}
1886
+ def create_privilege(name, version, statements)
1887
+ clean_error
1888
+ prepare_token
1889
+
1890
+ begin
1891
+ url = url_for(CREATE_PRIVILEGE_URL)
1892
+
1893
+ statement_data = []
1894
+ for statement in statements
1895
+ if statement.instance_of?(OneLogin::Api::Models::Statement)
1896
+ statement_data << {
1897
+ 'Effect' => statement.effect,
1898
+ 'Action' => statement.actions,
1899
+ 'Scope' => statement.scopes
1900
+ }
1901
+ elsif statement.instance_of?(Hash) && statement.has_key?('Effect') && statement.has_key?('Action') && statement.has_key?('Scope')
1902
+ statement_data << statement
1903
+ else
1904
+ @error = 400.to_s
1905
+ @error_description = "statements is invalid. Provide a list of statements. The statement should be an Statement object or dict with the keys Effect, Action and Scope"
1906
+ return
1907
+ end
1908
+ end
1909
+
1910
+ privilege_data = {
1911
+ 'name' => name,
1912
+ 'privilege' => {
1913
+ 'Version'=> version,
1914
+ 'Statement' => statement_data
1915
+ }
1916
+ }
1917
+
1918
+ response = self.class.post(
1919
+ url,
1920
+ headers: authorized_headers,
1921
+ body: privilege_data.to_json
1922
+ )
1923
+
1924
+ if response.code == 201
1925
+ json_data = JSON.parse(response.body)
1926
+ if json_data && json_data.has_key?('id')
1927
+ return OneLogin::Api::Models::Privilege.new(json_data['id'], name, version, statements)
1928
+ end
1929
+ else
1930
+ @error = extract_status_code_from_response(response)
1931
+ @error_description = extract_error_message_from_response(response)
1932
+ end
1933
+ rescue Exception => e
1934
+ @error = '500'
1935
+ @error_description = e.message
1936
+ end
1937
+
1938
+ nil
1939
+ end
1940
+
1941
+ # Get a Privilege.
1942
+ #
1943
+ # @param privilege_id [string] Id of the privilege
1944
+ #
1945
+ # @return [Privilege] the privilege identified by the id
1946
+ #
1947
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/get-privilege Get Privilege documentation}
1948
+ def get_privilege(privilege_id)
1949
+ clean_error
1950
+ prepare_token
1951
+
1952
+ begin
1953
+
1954
+ url = url_for(GET_PRIVILEGE_URL, privilege_id)
1955
+
1956
+ response = self.class.get(
1957
+ url,
1958
+ headers: authorized_headers
1959
+ )
1960
+
1961
+ if response.code == 200
1962
+ json_data = JSON.parse(response.body)
1963
+ if json_data && json_data.has_key?('id')
1964
+ return OneLogin::Api::Models::Privilege.new(json_data)
1965
+ end
1966
+ else
1967
+ @error = extract_status_code_from_response(response)
1968
+ @error_description = extract_error_message_from_response(response)
1969
+ end
1970
+ rescue Exception => e
1971
+ @error = '500'
1972
+ @error_description = e.message
1973
+ end
1974
+
1975
+ nil
1976
+ end
1977
+
1978
+ # Updates a Privilege
1979
+ #
1980
+ # @param privilege_id [string] The id of the privilege to be updated.
1981
+ # @param name [string] The name of the privilege.
1982
+ # @param version [string] The version for the privilege schema. Set to 2018-05-18.
1983
+ # @param statements [Array] A list of statements. Statement object or a dict with the keys Effect, Action and Scope
1984
+ #
1985
+ #
1986
+ # @return [Privilege] the modified privilege
1987
+ #
1988
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/update-privilege Update Privilege documentation}
1989
+ def update_privilege(privilege_id, name, version, statements)
1990
+ clean_error
1991
+ prepare_token
1992
+
1993
+ begin
1994
+ url = url_for(UPDATE_PRIVILEGE_URL, privilege_id)
1995
+
1996
+ statement_data = []
1997
+ for statement in statements
1998
+ if statement.instance_of?(OneLogin::Api::Models::Statement)
1999
+ statement_data << {
2000
+ 'Effect' => statement.effect,
2001
+ 'Action' => statement.actions,
2002
+ 'Scope' => statement.scopes
2003
+ }
2004
+ elsif statement.instance_of?(Hash) && statement.has_key?('Effect') && statement.has_key?('Action') && statement.has_key?('Scope')
2005
+ statement_data << statement
2006
+ else
2007
+ @error = 400.to_s
2008
+ @error_description = "statements is invalid. Provide a list of statements. The statement should be an Statement object or dict with the keys Effect, Action and Scope"
2009
+ return
2010
+ end
2011
+ end
2012
+
2013
+ privilege_data = {
2014
+ 'name' => name,
2015
+ 'privilege' => {
2016
+ 'Version'=> version,
2017
+ 'Statement' => statement_data
2018
+ }
2019
+ }
2020
+
2021
+ response = self.class.put(
2022
+ url,
2023
+ headers: authorized_headers,
2024
+ body: privilege_data.to_json
2025
+ )
2026
+
2027
+ if response.code == 200
2028
+ json_data = JSON.parse(response.body)
2029
+ if json_data && json_data.has_key?('id')
2030
+ return OneLogin::Api::Models::Privilege.new(json_data['id'], name, version, statements)
2031
+ end
2032
+ else
2033
+ @error = extract_status_code_from_response(response)
2034
+ @error_description = extract_error_message_from_response(response)
2035
+ end
2036
+ rescue Exception => e
2037
+ @error = '500'
2038
+ @error_description = e.message
2039
+ end
2040
+
2041
+ nil
2042
+ end
2043
+
2044
+ # Deletes a Privilege
2045
+ #
2046
+ # @param privilege_id [string] Id of the privilege to be removed.
2047
+ #
2048
+ # @return [Boolean] if the action succeed
2049
+ #
2050
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/delete-privilege Delete Privilege documentation}
2051
+ def delete_privilege(privilege_id)
2052
+ clean_error
2053
+ prepare_token
2054
+
2055
+ begin
2056
+ url = url_for(DELETE_PRIVILEGE_URL, privilege_id)
2057
+
2058
+ response = self.class.delete(
2059
+ url,
2060
+ headers: authorized_headers
2061
+ )
2062
+
2063
+ if response.code == 204
2064
+ return handle_operation_response(response)
2065
+ else
2066
+ @error = extract_status_code_from_response(response)
2067
+ @error_description = extract_error_message_from_response(response)
2068
+ end
2069
+ rescue Exception => e
2070
+ @error = '500'
2071
+ @error_description = e.message
2072
+ end
2073
+
2074
+ false
2075
+ end
2076
+
2077
+ # Gets a list of the roles assigned to a privilege.
2078
+ #
2079
+ # @param privilege_id [string] Id of the privilege.
2080
+ #
2081
+ # @return [Array] list of Role Id
2082
+ #
2083
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/get-roles Get Assigned Roles documentation}
2084
+ def get_roles_assigned_to_privilege(privilege_id)
2085
+ clean_error
2086
+ prepare_token
2087
+
2088
+ begin
2089
+ options = {
2090
+ headers: authorized_headers,
2091
+ max_results: @max_results,
2092
+ container: 'roles'
2093
+ }
2094
+
2095
+ return Cursor.new(self.class, url_for(GET_ROLES_ASSIGNED_TO_PRIVILEGE_URL, privilege_id), options)
2096
+
2097
+ rescue Exception => e
2098
+ @error = '500'
2099
+ @error_description = e.message
2100
+ end
2101
+
2102
+ nil
2103
+ end
2104
+
2105
+ # Assign one or more roles to a privilege.
2106
+ #
2107
+ # @param privilege_id [string] Id of the privilege.
2108
+ # @param role_ids [Array] Ids of the roles to be added.
2109
+ #
2110
+ # @return [Boolean] if the action succeed
2111
+ #
2112
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/assign-role Assign Roles documentation}
2113
+ def assign_roles_to_privilege(privilege_id, role_ids)
2114
+ clean_error
2115
+ prepare_token
2116
+
2117
+ begin
2118
+ url = url_for(ASSIGN_ROLES_TO_PRIVILEGE_URL, privilege_id)
2119
+
2120
+ data = {
2121
+ 'roles' => role_ids
2122
+ }
2123
+
2124
+ response = self.class.post(
2125
+ url,
2126
+ headers: authorized_headers,
2127
+ body: data.to_json
2128
+ )
2129
+
2130
+ if response.code == 201
2131
+ return handle_operation_response(response)
2132
+ else
2133
+ @error = extract_status_code_from_response(response)
2134
+ @error_description = extract_error_message_from_response(response)
2135
+
2136
+ end
2137
+ rescue Exception => e
2138
+ @error = '500'
2139
+ @error_description = e.message
2140
+ end
2141
+
2142
+ false
2143
+ end
2144
+
2145
+ # Removes one role from the privilege.
2146
+ #
2147
+ # @param privilege_id [string] Id of the privilege.
2148
+ # @param role_id [Integer] Id of the role to be removed.
2149
+ #
2150
+ # @return [Boolean] if the action succeed
2151
+ #
2152
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/remove-role Remove Role documentation}
2153
+ def remove_role_from_privilege(privilege_id, role_id)
2154
+ clean_error
2155
+ prepare_token
2156
+
2157
+ begin
2158
+ url = url_for(REMOVE_ROLE_FROM_PRIVILEGE_URL, privilege_id, role_id)
2159
+
2160
+ response = self.class.delete(
2161
+ url,
2162
+ headers: authorized_headers
2163
+ )
2164
+
2165
+ if response.code == 204
2166
+ return true
2167
+ else
2168
+ @error = extract_status_code_from_response(response)
2169
+ @error_description = extract_error_message_from_response(response)
2170
+ end
2171
+ rescue Exception => e
2172
+ @error = '500'
2173
+ @error_description = e.message
2174
+ end
2175
+
2176
+ false
2177
+ end
2178
+
2179
+ # Gets a list of the users assigned to a privilege.
2180
+ #
2181
+ # @param privilege_id [string] Id of the privilege.
2182
+ #
2183
+ # @return [Array] list of User Id
2184
+ #
2185
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/get-users Get Assigned Users documentation}
2186
+ def get_users_assigned_to_privilege(privilege_id)
2187
+ clean_error
2188
+ prepare_token
2189
+
2190
+ begin
2191
+ options = {
2192
+ headers: authorized_headers,
2193
+ max_results: @max_results,
2194
+ container: 'users'
2195
+ }
2196
+
2197
+ return Cursor.new(self.class, url_for(GET_USERS_ASSIGNED_TO_PRIVILEGE_URL, privilege_id), options)
2198
+
2199
+ rescue Exception => e
2200
+ @error = '500'
2201
+ @error_description = e.message
2202
+ end
2203
+
2204
+ nil
2205
+ end
2206
+
2207
+ # Assign one or more users to a privilege.
2208
+ #
2209
+ # @param privilege_id [string] Id of the privilege.
2210
+ # @param user_ids [Array] Ids of the users to be added.
2211
+ #
2212
+ # @return [Boolean] if the action succeed
2213
+ #
2214
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/assign-users Assign Users documentation}
2215
+ def assign_users_to_privilege(privilege_id, user_ids)
2216
+ clean_error
2217
+ prepare_token
2218
+
2219
+ begin
2220
+ url = url_for(ASSIGN_USERS_TO_PRIVILEGE_URL, privilege_id)
2221
+
2222
+ data = {
2223
+ 'users' => user_ids
2224
+ }
2225
+
2226
+ response = self.class.post(
2227
+ url,
2228
+ headers: authorized_headers,
2229
+ body: data.to_json
2230
+ )
2231
+
2232
+ if response.code == 201
2233
+ return handle_operation_response(response)
2234
+ else
2235
+ @error = extract_status_code_from_response(response)
2236
+ @error_description = extract_error_message_from_response(response)
2237
+ end
2238
+ rescue Exception => e
2239
+ @error = '500'
2240
+ @error_description = e.message
2241
+ end
2242
+
2243
+ false
2244
+ end
2245
+
2246
+ # Removes one user from the privilege.
2247
+ #
2248
+ # @param privilege_id [string] Id of the privilege.
2249
+ # @param user_id [Integer] Id of the user to be removed.
2250
+ #
2251
+ # @return [Boolean] if the action succeed
2252
+ #
2253
+ # @see {https://developers.onelogin.com/api-docs/1/privileges/remove-user Remove User documentation}
2254
+ def remove_user_from_privilege(privilege_id, user_id)
2255
+ clean_error
2256
+ prepare_token
2257
+
2258
+ begin
2259
+ url = url_for(REMOVE_USER_FROM_PRIVILEGE_URL, privilege_id, user_id)
2260
+
2261
+ response = self.class.delete(
2262
+ url,
2263
+ headers: authorized_headers
2264
+ )
2265
+
2266
+ if response.code == 204
2267
+ return true
2268
+ else
2269
+ @error = extract_status_code_from_response(response)
2270
+ @error_description = extract_error_message_from_response(response)
2271
+ end
2272
+ rescue Exception => e
2273
+ @error = '500'
2274
+ @error_description = e.message
2275
+ end
2276
+
2277
+ false
2278
+ end
2279
+
1829
2280
  end
1830
2281
  end
1831
2282
  end