61 lines
1.9 KiB
Ruby
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
|