use devops config
This commit is contained in:
parent
a63aaa4651
commit
53961231d9
@ -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"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user