blob: ca2264381433d373f7d9533211d00919ec099d37 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
namespace :users do
def api_retrieve_user
conf = Rails.application.config.try(:stif_portail_api)
raise 'Rails.application.config.stif_portail_api settings is not defined' unless conf
conn = Faraday.new(:url => conf[:url]) do |c|
c.headers['Authorization'] = "Token token=\"#{conf[:key]}\""
c.adapter Faraday.default_adapter
end
resp = conn.get '/api/v1/users'
JSON.parse resp.body if resp.status == 200
end
def sync_users data
data.each do |el|
User.find_or_create_by(username: el['username']).tap do |user|
user.name = "#{el['firstname']} #{el['lastname']}"
user.email = el['email']
user.synced_at = Time.now
# Set organisation
user.organisation = Organisation.find_or_create_by(code: el['organization_code']).tap do |org|
org.name = el['organization_name']
org.synced_at = Time.now
end
user.save if user.changed?
puts "✓ user #{user.name} has been updated" unless Rails.env.test?
end
end
end
desc "Sync users from stif portail"
task sync: :environment do
data = api_retrieve_user
sync_users(data) if data
end
end
|