summaryrefslogtreecommitdiff
path: root/bin/rpc
diff options
context:
space:
mode:
Diffstat (limited to 'bin/rpc')
-rwxr-xr-xbin/rpc18
1 files changed, 17 insertions, 1 deletions
diff --git a/bin/rpc b/bin/rpc
index fe9a0dc..aa154c8 100755
--- a/bin/rpc
+++ b/bin/rpc
@@ -5,6 +5,7 @@ require "bundler/inline"
gemfile do
source "https://rubygems.org"
+ gem "declarative_policy", "~> 1.0"
gem "grpc", "~> 1.0"
gem "grpc-tools", "~> 1.0"
gem "logger", "~> 1.0"
@@ -15,12 +16,27 @@ $LOAD_PATH.unshift(lib_path) unless $LOAD_PATH.include?(lib_path)
require 'ability_services_pb'
+class ProjectPolicy < DeclarativePolicy::Base
+ condition(:owner) { @subject.owner?(@user) }
+
+ rule { owner }.enable :create_project
+end
+
class AbilityHandler < ::Ability::Service
def allowed(request, _call)
puts [request, _call].inspect
- # TODO:: entrypoint to declarative policies
GRPC.logger.info([request, _call].inspect)
+
AllowReply.new(result: true)
+ # TODO:: entrypoint to declarative policies
+ # AllowReply.new(result: policy_for(request).can?(request.permission))
+ end
+
+ private
+
+ def policy_for(request)
+ # TODO:: convert subject in form of GlobalID to Resource Type
+ DeclarativePolicy.policy_for(request.subject, request.resource)
end
end