Class: PgSqlTriggers::Permissions::Checker
- Inherits:
-
Object
- Object
- PgSqlTriggers::Permissions::Checker
- Defined in:
- lib/pg_sql_triggers/permissions/checker.rb
Class Method Summary collapse
Class Method Details
.can?(actor, action, environment: nil) ⇒ Boolean
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/pg_sql_triggers/permissions/checker.rb', line 6 def self.can?(actor, action, environment: nil) action_sym = action.to_sym # If custom permission checker is configured, use it if PgSqlTriggers. environment ||= PgSqlTriggers.default_environment.call if PgSqlTriggers.default_environment.respond_to?(:call) return PgSqlTriggers..call(actor, action_sym, environment) end # Default behavior: allow all permissions # This should be overridden in production via configuration true end |
.check!(actor, action, environment: nil) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/pg_sql_triggers/permissions/checker.rb', line 20 def self.check!(actor, action, environment: nil) return true if can?(actor, action, environment: environment) action_sym = action.to_sym required_level = Permissions::ACTIONS[action_sym] || "unknown" = "Permission denied: #{action_sym} requires #{required_level} level access" recovery = "Contact your administrator to request #{required_level} level access for this operation." raise PgSqlTriggers::PermissionError.new( , error_code: "PERMISSION_DENIED", recovery_suggestion: recovery, context: { action: action_sym, required_role: required_level, environment: environment } ) end |