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
|
|
|