63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "db/mongo/models/user"
 | |
| require "app/api2/parsers/user"
 | |
| require_relative "request_handler"
 | |
| 
 | |
| module Devops
 | |
|   module API2_0
 | |
|     module Handler
 | |
|       class User < RequestHandler
 | |
| 
 | |
|         set_parser Devops::API2_0::Parser::UserParser
 | |
| 
 | |
|         def users
 | |
|           Devops::Db.connector.users({}, fields: {password: false})
 | |
|         end
 | |
| 
 | |
|         def create
 | |
|           Devops::Db.connector.user_insert parser.create
 | |
|         end
 | |
| 
 | |
|         def delete user_id
 | |
|           projects = Devops::Db.connector.projects_by_user user_id
 | |
|           if !projects.empty?
 | |
|             str = ""
 | |
|             projects.each do |p|
 | |
|               p.deploy_envs.each do |e|
 | |
|                 str+="#{p.id}.#{e.identifier} " if e.users.include? user_id
 | |
|               end
 | |
|             end
 | |
|             raise DependencyError.new "Deleting is forbidden: User is included in #{str}"
 | |
|           end
 | |
|           Devops::Db.connector.user_delete user_id
 | |
|         end
 | |
| 
 | |
|         def change_user_privileges user_id
 | |
|           cmd, privileges = parser.user_privileges
 | |
|           change_user(user_id) do |user|
 | |
|             user.grant(cmd, privileges)
 | |
|           end
 | |
|         end
 | |
| 
 | |
|         def change_email user_id
 | |
|           change_user(user_id) do |user|
 | |
|             user.email = parser.change_email
 | |
|           end
 | |
|         end
 | |
| 
 | |
|         def change_password user_id
 | |
|           change_user(user_id) do |user|
 | |
|             user.password = parser.change_password
 | |
|           end
 | |
|         end
 | |
| 
 | |
|         def change_user user_id
 | |
|           user = Devops::Db.connector.user user_id
 | |
|           yield(user)
 | |
|           Devops::Db.connector.user_update user
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | 
