diff --git a/devops-service/lib/users_permissions_updater.rb b/devops-service/lib/users_permissions_updater.rb index 78558b7..13e844b 100644 --- a/devops-service/lib/users_permissions_updater.rb +++ b/devops-service/lib/users_permissions_updater.rb @@ -1,21 +1,27 @@ require "mongo" +require "../core/devops-config" class UsersPermissionsUpdater attr_reader :users_collection - def initialize(config) - db = config[:db] || "devops" - host = config[:host] || "localhost" - port = config[:port] || 27017 - user = config[:user] - password = config[:password] + def initialize + DevopsConfig.read + config = DevopsConfig.config + + db = config[:mongo_db] || "devops" + host = config[:mongo_host] || "localhost" + port = config[:mongo_port] || 27017 + user = config[:mongo_user] + password = config[:mongo_password] + + puts + puts "Initialized updater for db '#{db}' located on host '#{host}'" @db = Mongo::MongoClient.new(host, port).db(db) @db.authenticate(user, password) @users_collection = @db.collection('users') end - # returns users who have rwx in permissions.server field def admins users_collection.find('privileges.server' => 'rwx') end @@ -24,38 +30,26 @@ class UsersPermissionsUpdater users_collection.find('privileges.server' => 'r') end - def set_priveleges_to_users(users, privilege_name, privilege_value) + def set_priveleges_to_users(users, privilege_value) ids = users.to_a.map {|u| u['_id']} + puts "users: #{ids.join(', ')}" users_collection.update( {"_id" => {'$in' => ids}}, { "$set" => { - "privileges.#{privilege_name}" => privilege_value + "privileges.stack" => privilege_value, + "privileges.stack_template" => privilege_value } } ) end - def not_admin_or_readers - all = users_collection.find({}).to_a - admin_ids = admins.to_a.map {|u| u['_id']} - reader_ids = readers.to_a.map {|u| u['_id']} - admin_or_reader_ids = admin_ids + reader_ids - - result = all.delete_if do |user| - admin_or_reader_ids.include?(user['_id']) - end - end end -updater = UsersPermissionsUpdater.new(user: 'user', password: 'pass', db: 'devops_prod') -updater.set_priveleges_to_users(updater.admins, 'stack', 'rwx') -updater.set_priveleges_to_users(updater.admins, 'stack_template', 'rwx') +updater = UsersPermissionsUpdater.new +updater.set_priveleges_to_users(updater.admins, 'rwx') +puts "Admin privileges updated" -updater.set_priveleges_to_users(updater.readers, 'stack', 'r') -updater.set_priveleges_to_users(updater.readers, 'stack_template', 'r') - - -puts "Updated admins" -puts "Updated readers" +updater.set_priveleges_to_users(updater.readers, 'r') +puts "Readers privileges updated"