57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| module Connectors
 | |
|   class User < Base
 | |
|     include Helpers::InsertCommand,
 | |
|       Helpers::ShowCommand,
 | |
|       Helpers::ListCommand,
 | |
|       Helpers::DeleteCommand,
 | |
|       Helpers::UpdateCommand
 | |
| 
 | |
|     def initialize(db)
 | |
|       self.collection = db.collection('users')
 | |
|     end
 | |
| 
 | |
|     def user_auth user, password
 | |
|       u = collection.find('_id' => user, 'password' => password).to_a.first
 | |
|       raise RecordNotFound.new('Invalid username or password') if u.nil?
 | |
|     end
 | |
| 
 | |
|     def users(ids=nil)
 | |
|       query = {}
 | |
|       query['_id'] = {'$in' => ids} if ids.is_a?(Array)
 | |
|       list(query)
 | |
|     end
 | |
| 
 | |
|     def users_names(ids=nil)
 | |
|       users = self.users(ids)
 | |
|       users.map(&:id)
 | |
|     end
 | |
| 
 | |
|     def create_root_user
 | |
|       u = user('root')
 | |
|     rescue RecordNotFound => e
 | |
|       root = Devops::Model::User.create_root
 | |
|       collection.insert(root.to_mongo_hash)
 | |
|     end
 | |
| 
 | |
|     def check_user_privileges(id, cmd, required_privelege)
 | |
|       user = show(id)
 | |
| 
 | |
|       unless Devops::Model::User::PRIVILEGES.include?(required_privelege)
 | |
|         raise InvalidPrivileges.new("Access internal problem with privilege '#{required_privelege}'")
 | |
|       end
 | |
| 
 | |
|       unless user.can?(cmd, required_privelege)
 | |
|         raise InvalidPrivileges.new("Access denied for '#{user.id}'")
 | |
|       end
 | |
|       true
 | |
|     end
 | |
| 
 | |
|     private
 | |
| 
 | |
|     def model_from_bson(bson)
 | |
|       Devops::Model::User.build_from_bson(bson)
 | |
|     end
 | |
|   end
 | |
| 
 | |
| end
 | 
