fluke/devops-service/app/api3/routes/roles.rb
Tim Lianov 03dc3d8d99 v3
2018-04-04 22:44:39 +03:00

61 lines
1.9 KiB
Ruby

module Devops
module API3
module Routes
module RolesRoutes
def self.registered(app)
app.define_policy :read_roles, "Read roles and available policies"
app.define_policy :create_roles, "Create new roles"
app.define_policy :delete_roles, "Delete roles"
app.get_with_headers "/security/policies" do
check_policy(:read_roles)
json Devops::API3::Handler::Roles.new(request).policies.map{|p| p.to_hash}
end
app.get_with_headers "/security/roles" do
check_policy(:read_roles)
json Devops::API3::Handler::Roles.new(request).roles.map(&:to_hash)
end
app.post_with_headers "/security/role" do
check_policy(:create_roles)
role = Devops::API3::Handler::Roles.new(request).create_role()
create_response "Created", {id: role.id}, 201
end
hash = {}
hash["GET"] = lambda {|id|
check_policy(:read_roles)
json Devops::API3::Handler::Roles.new(request).role(id).to_hash
}
hash["DELETE"] = lambda {|id|
check_policy(:delete_roles)
Devops::API3::Handler::Roles.new(request).delete_role(id)
create_response "Deleted", {id: id}, 200
}
app.multi_routes "/security/role/:id", hash
app.post_with_headers "/security/role/:id/policies/add" do |role_id|
check_policy(:create_roles)
Devops::API3::Handler::Roles.new(request).add_policies(role_id)
create_response "Updated", {id: role_id}
end
app.post_with_headers "/security/role/:id/policies/delete" do |role_id|
check_policy(:create_roles)
Devops::API3::Handler::Roles.new(request).delete_policies(role_id)
create_response "Updated", {id: role_id}
end
puts "Roles routes initialized"
end
end
end
end
end