| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  | require "db/mongo/models/user" | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  | require "app/api2/parsers/user" | 
					
						
							|  |  |  | require_relative "request_handler" | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | module Devops | 
					
						
							|  |  |  |   module API2_0 | 
					
						
							|  |  |  |     module Handler | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |       class User < RequestHandler | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         set_parser Devops::API2_0::Parser::UserParser | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |         def users | 
					
						
							| 
									
										
										
										
											2015-08-03 15:09:04 +03:00
										 |  |  |           Devops::Db.connector.users({}, fields: {password: false}) | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |         def create | 
					
						
							|  |  |  |           body | 
					
						
							|  |  |  |           Devops::Db.connector.user_insert parser.create | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def delete user_id | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |           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 | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |           Devops::Db.connector.user_delete user_id | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |         def change_user_privileges user_id | 
					
						
							|  |  |  |           cmd, privileges = parser.user_privileges | 
					
						
							| 
									
										
										
										
											2015-07-27 18:27:52 +03:00
										 |  |  |           change_user(user_id) do |user| | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |             user.grant(cmd, privileges) | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |         def change_email user_id | 
					
						
							| 
									
										
										
										
											2015-07-27 18:27:52 +03:00
										 |  |  |           change_user(user_id) do |user| | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |             user.email = parser.change_email | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |           end | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |         def change_password user_id | 
					
						
							| 
									
										
										
										
											2015-07-27 18:27:52 +03:00
										 |  |  |           change_user(user_id) do |user| | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |             user.password = parser.change_password | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |           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 | 
					
						
							|  |  |  | 
 |