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 |