user module
This commit is contained in:
parent
98fcbca3b5
commit
cbf48145cd
@ -13,13 +13,22 @@ require "db/mongo/mongo_connector"
|
|||||||
require "providers/provider_factory"
|
require "providers/provider_factory"
|
||||||
|
|
||||||
require "routes/v2.0"
|
require "routes/v2.0"
|
||||||
|
require "helpers/version_2"
|
||||||
|
|
||||||
|
require "routes/v2.0/provider"
|
||||||
|
require "routes/v2.0/user"
|
||||||
|
|
||||||
class DevopsService < Sinatra::Base
|
class DevopsService < Sinatra::Base
|
||||||
|
|
||||||
helpers Sinatra::Streaming
|
helpers Sinatra::Streaming
|
||||||
|
helpers Sinatra::Version2_0::Helpers
|
||||||
|
|
||||||
|
register Sinatra::Version2_0::Core::ProviderRoutes
|
||||||
|
register Sinatra::Version2_0::Core::UserRoutes
|
||||||
|
|
||||||
def initialize config
|
def initialize config
|
||||||
super()
|
super()
|
||||||
|
self.class.set :config, config
|
||||||
@@config = config
|
@@config = config
|
||||||
root = File.dirname(__FILE__)
|
root = File.dirname(__FILE__)
|
||||||
@@config[:keys_dir] = File.join(root, "../.devops_files/keys")
|
@@config[:keys_dir] = File.join(root, "../.devops_files/keys")
|
||||||
@ -29,9 +38,10 @@ class DevopsService < Sinatra::Base
|
|||||||
end
|
end
|
||||||
[:keys_dir, :scripts_dir].each {|key| d = @@config[key]; FileUtils.mkdir_p(d) unless File.exists?(d) }
|
[:keys_dir, :scripts_dir].each {|key| d = @@config[key]; FileUtils.mkdir_p(d) unless File.exists?(d) }
|
||||||
mongo = DevopsService.mongo
|
mongo = DevopsService.mongo
|
||||||
|
self.class.set :mongo, mongo
|
||||||
mongo.create_root_user
|
mongo.create_root_user
|
||||||
::Provider::ProviderFactory.init(config)
|
::Provider::ProviderFactory.init(config)
|
||||||
set_up_providers_keys!(::Provider::ProviderFactory.all, mongo)
|
#set_up_providers_keys!(::Provider::ProviderFactory.all, mongo)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@mongo
|
@@mongo
|
||||||
@ -54,7 +64,92 @@ class DevopsService < Sinatra::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
use ::Version2_0::V2_0
|
include Sinatra::JSON
|
||||||
|
|
||||||
|
configure :production do
|
||||||
|
disable :dump_errors
|
||||||
|
disable :show_exceptions
|
||||||
|
set :logging, Logger::INFO
|
||||||
|
end
|
||||||
|
|
||||||
|
configure :development do
|
||||||
|
set :logging, Logger::DEBUG
|
||||||
|
disable :raise_errors
|
||||||
|
# disable :dump_errors
|
||||||
|
set :show_exceptions, :after_handler
|
||||||
|
end
|
||||||
|
|
||||||
|
not_found do
|
||||||
|
"Not found"
|
||||||
|
end
|
||||||
|
|
||||||
|
error RecordNotFound do
|
||||||
|
e = env["sinatra.error"]
|
||||||
|
logger.warn e.message
|
||||||
|
halt_response(e.message, 404)
|
||||||
|
end
|
||||||
|
|
||||||
|
error InvalidRecord do
|
||||||
|
e = env["sinatra.error"]
|
||||||
|
logger.warn e.message
|
||||||
|
logger.warn "Request body: #{request.body.read}"
|
||||||
|
halt_response(e.message, 400)
|
||||||
|
end
|
||||||
|
|
||||||
|
error InvalidCommand do
|
||||||
|
e = env["sinatra.error"]
|
||||||
|
logger.warn e.message
|
||||||
|
halt_response(e.message, 400)
|
||||||
|
end
|
||||||
|
|
||||||
|
error DependencyError do
|
||||||
|
e = env["sinatra.error"]
|
||||||
|
logger.warn e.message
|
||||||
|
halt_response(e.message, 400)
|
||||||
|
end
|
||||||
|
|
||||||
|
error InvalidPrivileges do
|
||||||
|
e = env["sinatra.error"]
|
||||||
|
logger.warn e.message
|
||||||
|
halt_response(e.message, 401)
|
||||||
|
end
|
||||||
|
|
||||||
|
error Excon::Errors::Unauthorized do
|
||||||
|
e = env["sinatra.error"]
|
||||||
|
resp = e.response
|
||||||
|
ct = resp.headers["Content-Type"]
|
||||||
|
msg = unless ct.nil?
|
||||||
|
if ct.include?("application/json")
|
||||||
|
json = ::Chef::JSONCompat.from_json(resp.body)
|
||||||
|
m = "ERROR: Unauthorized (#{json['error']['code']}): #{json['error']['message']}"
|
||||||
|
logger.error(m)
|
||||||
|
else
|
||||||
|
end
|
||||||
|
m
|
||||||
|
else
|
||||||
|
"Unauthorized: #{e.inspect}"
|
||||||
|
end
|
||||||
|
halt_response(msg, 500)
|
||||||
|
end
|
||||||
|
|
||||||
|
error Fog::Compute::AWS::Error do
|
||||||
|
e = env["sinatra.error"]
|
||||||
|
logger.error e.message
|
||||||
|
halt_response(e.message, 500)
|
||||||
|
end
|
||||||
|
|
||||||
|
error do
|
||||||
|
e = env["sinatra.error"]
|
||||||
|
logger.error e.message
|
||||||
|
halt_response(e.message, 500)
|
||||||
|
end
|
||||||
|
|
||||||
|
# def self.mongo
|
||||||
|
# DevopsService.mongo
|
||||||
|
# end
|
||||||
|
|
||||||
|
|
||||||
|
# use ::Version2_0::V2_0
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|||||||
47
devops-service/helpers/request.rb
Normal file
47
devops-service/helpers/request.rb
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
require 'sinatra/base'
|
||||||
|
require "sinatra/json"
|
||||||
|
|
||||||
|
require "providers/provider_factory"
|
||||||
|
|
||||||
|
module Sinatra
|
||||||
|
module Version2_0
|
||||||
|
module Request
|
||||||
|
module Helpers
|
||||||
|
|
||||||
|
# Check request headers
|
||||||
|
def check_headers *headers
|
||||||
|
ha = (headers.empty? ? [:accept, :content_type] : headers)
|
||||||
|
ha.each do |h|
|
||||||
|
case h
|
||||||
|
when :accept, "accept"
|
||||||
|
accept_json
|
||||||
|
when :content_type, "content_type"
|
||||||
|
request_json
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check Accept header
|
||||||
|
#
|
||||||
|
# Can client works with JSON?
|
||||||
|
def accept_json
|
||||||
|
logger.debug(request.accept)
|
||||||
|
unless request.accept? 'application/json'
|
||||||
|
response.headers['Accept'] = 'application/json'
|
||||||
|
halt_response("Accept header should contains 'application/json' type", 406)
|
||||||
|
end
|
||||||
|
rescue NoMethodError => e
|
||||||
|
#error in sinatra 1.4.4 (https://github.com/sinatra/sinatra/issues/844, https://github.com/sinatra/sinatra/pull/805)
|
||||||
|
response.headers['Accept'] = 'application/json'
|
||||||
|
halt_response("Accept header should contains 'application/json' type", 406)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check Content-Type header
|
||||||
|
def request_json
|
||||||
|
halt_response("Content-Type should be 'application/json'", 415) if request.media_type.nil? or request.media_type != 'application/json'
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
131
devops-service/helpers/version_2.rb
Normal file
131
devops-service/helpers/version_2.rb
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
require "json"
|
||||||
|
require 'sinatra/base'
|
||||||
|
require "sinatra/json"
|
||||||
|
|
||||||
|
|
||||||
|
require "providers/provider_factory"
|
||||||
|
|
||||||
|
module Sinatra
|
||||||
|
module Version2_0
|
||||||
|
module Helpers
|
||||||
|
|
||||||
|
def create_response msg, obj=nil, rstatus=200
|
||||||
|
logger.info(msg)
|
||||||
|
status rstatus
|
||||||
|
obj = {} if obj.nil?
|
||||||
|
obj[:message] = msg
|
||||||
|
json(obj)
|
||||||
|
end
|
||||||
|
|
||||||
|
def halt_response msg, rstatus=400
|
||||||
|
obj = {:message => msg}
|
||||||
|
halt(rstatus, json(obj))
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_privileges cmd, p
|
||||||
|
#BaseRoutes.mongo.check_user_privileges(request.env['REMOTE_USER'], cmd, p)
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check request headers
|
||||||
|
def check_headers *headers
|
||||||
|
ha = (headers.empty? ? [:accept, :content_type] : headers)
|
||||||
|
ha.each do |h|
|
||||||
|
case h
|
||||||
|
when :accept, "accept"
|
||||||
|
accept_json
|
||||||
|
when :content_type, "content_type"
|
||||||
|
request_json
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check Accept header
|
||||||
|
#
|
||||||
|
# Can client works with JSON?
|
||||||
|
def accept_json
|
||||||
|
logger.debug(request.accept)
|
||||||
|
unless request.accept? 'application/json'
|
||||||
|
response.headers['Accept'] = 'application/json'
|
||||||
|
halt_response("Accept header should contains 'application/json' type", 406)
|
||||||
|
end
|
||||||
|
rescue NoMethodError => e
|
||||||
|
#error in sinatra 1.4.4 (https://github.com/sinatra/sinatra/issues/844, https://github.com/sinatra/sinatra/pull/805)
|
||||||
|
response.headers['Accept'] = 'application/json'
|
||||||
|
halt_response("Accept header should contains 'application/json' type", 406)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check Content-Type header
|
||||||
|
def request_json
|
||||||
|
halt_response("Content-Type should be 'application/json'", 415) if request.media_type.nil? or request.media_type != 'application/json'
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_provider provider
|
||||||
|
list = ::Provider::ProviderFactory.providers
|
||||||
|
halt_response("Invalid provider '#{provider}', available providers: '#{list.join("', '")}'", 404) unless list.include?(provider)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_object_from_json_body type=Hash, empty_body=false
|
||||||
|
json = request.body.read.strip
|
||||||
|
return nil if json.empty? and empty_body
|
||||||
|
@body_json = begin
|
||||||
|
::JSON.parse(json)
|
||||||
|
rescue ::JSON::ParserError => e
|
||||||
|
logger.error e.message
|
||||||
|
halt_response("Invalid JSON: #{e.message}")
|
||||||
|
end
|
||||||
|
halt_response("Invalid JSON, it should be an #{type == Array ? "array" : "object"}") unless @body_json.is_a?(type)
|
||||||
|
@body_json
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_string val, msg, _nil=false, empty=false
|
||||||
|
check_param val, String, msg, _nil, empty
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_array val, msg, vals_type=String, _nil=false, empty=false
|
||||||
|
check_param val, Array, msg, _nil, empty
|
||||||
|
val.each {|v| halt_response(msg) unless v.is_a?(vals_type)} unless val.nil?
|
||||||
|
val
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_filename file_name, not_string_msg, json_resp=true
|
||||||
|
check_string file_name, not_string_msg
|
||||||
|
r = Regexp.new("^[\\w _\\-.]{1,255}$", Regexp::IGNORECASE)
|
||||||
|
if r.match(file_name).nil?
|
||||||
|
msg = "Invalid file name '#{file_name}'. Expected name with 'a'-'z', '0'-'9', ' ', '_', '-', '.' symbols with length greate then 0 and less then 256 "
|
||||||
|
if json_resp
|
||||||
|
halt_response(msg)
|
||||||
|
else
|
||||||
|
halt(400, msg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
file_name
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_param val, type, msg, _nil=false, empty=false
|
||||||
|
if val.nil?
|
||||||
|
if _nil
|
||||||
|
return val
|
||||||
|
else
|
||||||
|
halt_response(msg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if val.is_a?(type)
|
||||||
|
halt_response(msg) if val.empty? and !empty
|
||||||
|
val
|
||||||
|
else
|
||||||
|
halt_response(msg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Save information about requests with methods POST, PUT, DELETE
|
||||||
|
def statistic msg=nil
|
||||||
|
unless request.get?
|
||||||
|
settings.mongo.statistic request.env['REMOTE_USER'], request.path, request.request_method, @body_json, response.status
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
@ -31,38 +31,6 @@ module Version2_0
|
|||||||
BaseRoutes.mongo.check_user_privileges(request.env['REMOTE_USER'], cmd, p)
|
BaseRoutes.mongo.check_user_privileges(request.env['REMOTE_USER'], cmd, p)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Check request headers
|
|
||||||
def check_headers *headers
|
|
||||||
ha = (headers.empty? ? [:accept, :content_type] : headers)
|
|
||||||
ha.each do |h|
|
|
||||||
case h
|
|
||||||
when :accept, "accept"
|
|
||||||
accept_json
|
|
||||||
when :content_type, "content_type"
|
|
||||||
request_json
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Check Accept header
|
|
||||||
#
|
|
||||||
# Can client works with JSON?
|
|
||||||
def accept_json
|
|
||||||
logger.debug(request.accept)
|
|
||||||
unless request.accept? 'application/json'
|
|
||||||
response.headers['Accept'] = 'application/json'
|
|
||||||
halt_response("Accept header should contains 'application/json' type", 406)
|
|
||||||
end
|
|
||||||
rescue NoMethodError => e
|
|
||||||
#error in sinatra 1.4.4 (https://github.com/sinatra/sinatra/issues/844, https://github.com/sinatra/sinatra/pull/805)
|
|
||||||
response.headers['Accept'] = 'application/json'
|
|
||||||
halt_response("Accept header should contains 'application/json' type", 406)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Check Content-Type header
|
|
||||||
def request_json
|
|
||||||
halt_response("Content-Type should be 'application/json'", 415) if request.media_type.nil? or request.media_type != 'application/json'
|
|
||||||
end
|
|
||||||
|
|
||||||
def check_provider provider
|
def check_provider provider
|
||||||
list = ::Provider::ProviderFactory.providers
|
list = ::Provider::ProviderFactory.providers
|
||||||
@ -132,89 +100,6 @@ module Version2_0
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
include Sinatra::JSON
|
|
||||||
|
|
||||||
configure :production do
|
|
||||||
disable :dump_errors
|
|
||||||
disable :show_exceptions
|
|
||||||
set :logging, Logger::INFO
|
|
||||||
end
|
|
||||||
|
|
||||||
configure :development do
|
|
||||||
set :logging, Logger::DEBUG
|
|
||||||
disable :raise_errors
|
|
||||||
# disable :dump_errors
|
|
||||||
set :show_exceptions, :after_handler
|
|
||||||
end
|
|
||||||
|
|
||||||
not_found do
|
|
||||||
"Not found"
|
|
||||||
end
|
|
||||||
|
|
||||||
error RecordNotFound do
|
|
||||||
e = env["sinatra.error"]
|
|
||||||
logger.warn e.message
|
|
||||||
halt_response(e.message, 404)
|
|
||||||
end
|
|
||||||
|
|
||||||
error InvalidRecord do
|
|
||||||
e = env["sinatra.error"]
|
|
||||||
logger.warn e.message
|
|
||||||
logger.warn "Request body: #{request.body.read}"
|
|
||||||
halt_response(e.message, 400)
|
|
||||||
end
|
|
||||||
|
|
||||||
error InvalidCommand do
|
|
||||||
e = env["sinatra.error"]
|
|
||||||
logger.warn e.message
|
|
||||||
halt_response(e.message, 400)
|
|
||||||
end
|
|
||||||
|
|
||||||
error DependencyError do
|
|
||||||
e = env["sinatra.error"]
|
|
||||||
logger.warn e.message
|
|
||||||
halt_response(e.message, 400)
|
|
||||||
end
|
|
||||||
|
|
||||||
error InvalidPrivileges do
|
|
||||||
e = env["sinatra.error"]
|
|
||||||
logger.warn e.message
|
|
||||||
halt_response(e.message, 401)
|
|
||||||
end
|
|
||||||
|
|
||||||
error Excon::Errors::Unauthorized do
|
|
||||||
e = env["sinatra.error"]
|
|
||||||
resp = e.response
|
|
||||||
ct = resp.headers["Content-Type"]
|
|
||||||
msg = unless ct.nil?
|
|
||||||
if ct.include?("application/json")
|
|
||||||
json = ::Chef::JSONCompat.from_json(resp.body)
|
|
||||||
m = "ERROR: Unauthorized (#{json['error']['code']}): #{json['error']['message']}"
|
|
||||||
logger.error(m)
|
|
||||||
else
|
|
||||||
end
|
|
||||||
m
|
|
||||||
else
|
|
||||||
"Unauthorized: #{e.inspect}"
|
|
||||||
end
|
|
||||||
halt_response(msg, 500)
|
|
||||||
end
|
|
||||||
|
|
||||||
error Fog::Compute::AWS::Error do
|
|
||||||
e = env["sinatra.error"]
|
|
||||||
logger.error e.message
|
|
||||||
halt_response(e.message, 500)
|
|
||||||
end
|
|
||||||
|
|
||||||
error do
|
|
||||||
e = env["sinatra.error"]
|
|
||||||
logger.error e.message
|
|
||||||
halt_response(e.message, 500)
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.mongo
|
|
||||||
DevopsService.mongo
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,15 +1,18 @@
|
|||||||
# encoding: UTF-8
|
# encoding: UTF-8
|
||||||
|
|
||||||
|
require 'sinatra/base'
|
||||||
|
|
||||||
require "json"
|
require "json"
|
||||||
require "routes/v2.0/base_routes"
|
require "routes/v2.0/base_routes"
|
||||||
require "providers/provider_factory"
|
require "providers/provider_factory"
|
||||||
|
|
||||||
module Version2_0
|
module Sinatra
|
||||||
class ProviderRoutes < BaseRoutes
|
module Version2_0
|
||||||
|
module Core
|
||||||
|
module ProviderRoutes
|
||||||
|
|
||||||
def initialize wrapper
|
def self.registered(app)
|
||||||
super wrapper
|
|
||||||
puts "Provider routes initialized"
|
puts "Provider routes initialized"
|
||||||
end
|
|
||||||
|
|
||||||
# Get devops providers
|
# Get devops providers
|
||||||
#
|
#
|
||||||
@ -23,11 +26,14 @@ module Version2_0
|
|||||||
# "ec2",
|
# "ec2",
|
||||||
# "openstack"
|
# "openstack"
|
||||||
# ]
|
# ]
|
||||||
get "/providers" do
|
app.get "/providers" do
|
||||||
check_headers :accept
|
check_headers :accept
|
||||||
check_privileges("provider", "r")
|
check_privileges("provider", "r")
|
||||||
json ::Provider::ProviderFactory.providers
|
json ::Provider::ProviderFactory.providers
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
#register Version2_0::Core::ProviderRoutes
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,16 +1,15 @@
|
|||||||
require "json"
|
|
||||||
require "db/exceptions/invalid_record"
|
require "db/exceptions/invalid_record"
|
||||||
require "db/mongo/models/user"
|
require "db/mongo/models/user"
|
||||||
|
|
||||||
module Version2_0
|
module Sinatra
|
||||||
class UserRoutes < BaseRoutes
|
module Version2_0
|
||||||
|
module Core
|
||||||
|
module UserRoutes
|
||||||
|
|
||||||
def initialize wrapper
|
def self.registered(app)
|
||||||
super wrapper
|
|
||||||
puts "User routes initialized"
|
puts "User routes initialized"
|
||||||
end
|
|
||||||
|
|
||||||
after %r{\A/user(/[\w]+(/password)?)?\z} do
|
app.after %r{\A/user(/[\w]+(/password)?)?\z} do
|
||||||
statistic
|
statistic
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -42,10 +41,10 @@ module Version2_0
|
|||||||
# "id": "test"
|
# "id": "test"
|
||||||
# }
|
# }
|
||||||
# ]
|
# ]
|
||||||
get "/users" do
|
app.get "/users" do
|
||||||
check_headers :accept
|
check_headers :accept
|
||||||
check_privileges("user", "r")
|
check_privileges("user", "r")
|
||||||
users = BaseRoutes.mongo.users.map {|i| i.to_hash}
|
users = settings.mongo.users.map {|i| i.to_hash}
|
||||||
users.each {|u| u.delete("password")}
|
users.each {|u| u.delete("password")}
|
||||||
json users
|
json users
|
||||||
end
|
end
|
||||||
@ -66,14 +65,15 @@ module Version2_0
|
|||||||
#
|
#
|
||||||
# * *Returns* :
|
# * *Returns* :
|
||||||
# 201 - Created
|
# 201 - Created
|
||||||
post "/user" do
|
app.post "/user" do
|
||||||
check_headers :accept, :content_type
|
check_headers :accept, :content_type
|
||||||
check_privileges("user", "w")
|
check_privileges("user", "w")
|
||||||
user = create_object_from_json_body
|
user = create_object_from_json_body
|
||||||
["username", "password", "email"].each do |p|
|
["username", "password", "email"].each do |p|
|
||||||
check_string(user[p], "Parameter '#{p}' must be a not empty string")
|
check_string(user[p], "Parameter '#{p}' must be a not empty string")
|
||||||
end
|
end
|
||||||
BaseRoutes.mongo.user_insert User.new(user)
|
#BaseRoutes.mongo.user_insert User.new(user)
|
||||||
|
settings.mongo.user_insert User.new(user)
|
||||||
create_response("Created", nil, 201)
|
create_response("Created", nil, 201)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -86,10 +86,10 @@ module Version2_0
|
|||||||
#
|
#
|
||||||
# * *Returns* :
|
# * *Returns* :
|
||||||
# 200 - Deleted
|
# 200 - Deleted
|
||||||
delete "/user/:user" do
|
app.delete "/user/:user" do
|
||||||
check_headers :accept
|
check_headers :accept
|
||||||
check_privileges("user", "w")
|
check_privileges("user", "w")
|
||||||
projects = BaseRoutes.mongo.projects_by_user params[:user]
|
projects = settings.mongo.projects_by_user params[:user]
|
||||||
if !projects.empty?
|
if !projects.empty?
|
||||||
str = ""
|
str = ""
|
||||||
projects.each do |p|
|
projects.each do |p|
|
||||||
@ -102,7 +102,7 @@ module Version2_0
|
|||||||
#return [400, "Deleting is forbidden: User is included in #{str}"]
|
#return [400, "Deleting is forbidden: User is included in #{str}"]
|
||||||
end
|
end
|
||||||
|
|
||||||
r = BaseRoutes.mongo.user_delete params[:user]
|
r = settings.mongo.user_delete params[:user]
|
||||||
create_response("User '#{params[:user]}' removed")
|
create_response("User '#{params[:user]}' removed")
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -121,15 +121,15 @@ module Version2_0
|
|||||||
#
|
#
|
||||||
# * *Returns* :
|
# * *Returns* :
|
||||||
# 200 - Updated
|
# 200 - Updated
|
||||||
put "/user/:user" do
|
app.put "/user/:user" do
|
||||||
check_headers :accept, :content_type
|
check_headers :accept, :content_type
|
||||||
check_privileges("user", "w")
|
check_privileges("user", "w")
|
||||||
data = create_object_from_json_body
|
data = create_object_from_json_body
|
||||||
user = BaseRoutes.mongo.user params[:user]
|
user = settings.mongo.user params[:user]
|
||||||
cmd = check_string(data["cmd"], "Parameter 'cmd' should be a not empty string", true) || ""
|
cmd = check_string(data["cmd"], "Parameter 'cmd' should be a not empty string", true) || ""
|
||||||
privileges = check_string(data["privileges"], "Parameter 'privileges' should be a not empty string", true) || ""
|
privileges = check_string(data["privileges"], "Parameter 'privileges' should be a not empty string", true) || ""
|
||||||
user.grant(cmd, privileges)
|
user.grant(cmd, privileges)
|
||||||
BaseRoutes.mongo.user_update user
|
settings.mongo.user_update user
|
||||||
create_response("Updated")
|
create_response("Updated")
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ module Version2_0
|
|||||||
#
|
#
|
||||||
# * *Returns* :
|
# * *Returns* :
|
||||||
# 200 - Updated
|
# 200 - Updated
|
||||||
put %r{\A/user/[\w]+/(email|password)\z} do
|
app.put %r{\A/user/[\w]+/(email|password)\z} do
|
||||||
check_headers :accept, :content_type
|
check_headers :accept, :content_type
|
||||||
action = File.basename(request.path)
|
action = File.basename(request.path)
|
||||||
u = File.basename(File.dirname(request.path))
|
u = File.basename(File.dirname(request.path))
|
||||||
@ -157,11 +157,14 @@ module Version2_0
|
|||||||
|
|
||||||
body = create_object_from_json_body
|
body = create_object_from_json_body
|
||||||
p = check_string(body[action], "Parameter '#{action}' must be a not empty string")
|
p = check_string(body[action], "Parameter '#{action}' must be a not empty string")
|
||||||
user = BaseRoutes.mongo.user u
|
user = settings.mongo.user u
|
||||||
user.send("#{action}=", p)
|
user.send("#{action}=", p)
|
||||||
BaseRoutes.mongo.user_update user
|
settings.mongo.user_update user
|
||||||
create_response("Updated")
|
create_response("Updated")
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user