diff options
Diffstat (limited to 'bin/rpc')
| -rwxr-xr-x | bin/rpc | 18 |
1 files changed, 17 insertions, 1 deletions
@@ -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 |
