onelogin 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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