fluke/devops-service/app/api2/handlers/user.rb

63 lines
1.6 KiB
Ruby
Raw Normal View History

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