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