fluke/devops-service/app/api2/handlers/user.rb
2015-08-05 14:25:08 +03:00

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