59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "mongo"
 | |
| require "../core/devops-config"
 | |
| 
 | |
| class UsersPermissionsUpdater
 | |
|   attr_reader :users_collection
 | |
| 
 | |
|   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
 | |
| 
 | |
|   def admins
 | |
|     users_collection.find('privileges.server' => 'rwx')
 | |
|   end
 | |
| 
 | |
|   def readers
 | |
|     users_collection.find('privileges.server' => 'r')
 | |
|   end
 | |
| 
 | |
|   def set_priveleges_to_users(users, privilege_value)
 | |
|     ids = users.to_a.map {|u| u['_id']}
 | |
|     puts "users: #{ids.join(', ')}"
 | |
| 
 | |
|     ids.each do |id|
 | |
|       @users_collection.update(
 | |
|         {"_id" => id},
 | |
|         {
 | |
|           "$set" => {
 | |
|             "privileges.stack" => privilege_value,
 | |
|             "privileges.stack_template" => privilege_value
 | |
|           }
 | |
|         }
 | |
|       )
 | |
|     end
 | |
| 
 | |
|   end
 | |
| 
 | |
| end
 | |
| 
 | |
| updater = UsersPermissionsUpdater.new
 | |
| updater.set_priveleges_to_users(updater.admins, 'rwx')
 | |
| puts "Admin privileges updated"
 | |
| 
 | |
| updater.set_priveleges_to_users(updater.readers, 'r')
 | |
| puts "Readers privileges updated"
 | 
