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
 | 
