sequel-privacy 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,66 @@
1
+ # typed: true
2
+
3
+ module Sequel
4
+ module Privacy
5
+ # Actions is a Struct instance used as the binding context for policy
6
+ # evaluation via instance_exec. Defined in actions.rb (typed: ignore).
7
+ class Actions
8
+ extend T::Sig
9
+
10
+ sig { returns(Symbol) }
11
+ def allow; end
12
+
13
+ sig { returns(Symbol) }
14
+ def deny; end
15
+
16
+ sig { returns(Symbol) }
17
+ def pass; end
18
+
19
+ sig { params(policies: T.untyped).returns(T::Array[T.untyped]) }
20
+ def all(*policies); end
21
+
22
+ sig {
23
+ params(
24
+ args: T.untyped,
25
+ block: Policy
26
+ ).returns(T.untyped)
27
+ }
28
+ def self.instance_exec(*args, &block); end
29
+ end
30
+
31
+ class PrivacyDSL
32
+ extend T::Sig
33
+
34
+ sig { params(action: Symbol, policies: T.untyped).void }
35
+ def can(action, *policies); end
36
+
37
+ sig { params(field_name: Symbol, policies: T.untyped).void }
38
+ def field(field_name, *policies); end
39
+
40
+ sig { params(association_name: Symbol, blk: T.proc.void).void }
41
+ def association(association_name, &blk); end
42
+ end
43
+ end
44
+
45
+ module Plugins
46
+ module Privacy
47
+ module ClassMethods
48
+ # The privacy block is evaluated in the context of PrivacyDSL
49
+ sig { params(blk: T.proc.bind(Sequel::Privacy::PrivacyDSL).void).void }
50
+ def privacy(&blk); end
51
+ end
52
+
53
+ module InstanceMethods
54
+ # Declare the @viewer_context instance variable for the mixin
55
+ sig { returns(T.nilable(Sequel::Privacy::ViewerContext)) }
56
+ attr_accessor :viewer_context
57
+ end
58
+
59
+ module DatasetMethods
60
+ # model is inherited from Sequel::Dataset but not visible to Sorbet
61
+ sig { returns(T.class_of(Sequel::Model)) }
62
+ def model; end
63
+ end
64
+ end
65
+ end
66
+ end
metadata ADDED
@@ -0,0 +1,144 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sequel-privacy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Austin Bales
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: sequel
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '5.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '5.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: sorbet-runtime
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.5'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.5'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rspec
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: sqlite3
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.4'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.4'
68
+ - !ruby/object:Gem::Dependency
69
+ name: sorbet
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.5'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.5'
82
+ - !ruby/object:Gem::Dependency
83
+ name: tapioca
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0.17'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.17'
96
+ description: A Sequel plugin that provides declarative privacy policies and automatic
97
+ enforcement at field access and query boundaries.
98
+ email:
99
+ - arbales@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - CHANGELOG.md
105
+ - LICENSE.txt
106
+ - README.md
107
+ - lib/sequel-privacy.rb
108
+ - lib/sequel/plugins/privacy.rb
109
+ - lib/sequel/privacy/actions.rb
110
+ - lib/sequel/privacy/built_in_policies.rb
111
+ - lib/sequel/privacy/cache.rb
112
+ - lib/sequel/privacy/enforcer.rb
113
+ - lib/sequel/privacy/errors.rb
114
+ - lib/sequel/privacy/i_actor.rb
115
+ - lib/sequel/privacy/policy.rb
116
+ - lib/sequel/privacy/policy_dsl.rb
117
+ - lib/sequel/privacy/version.rb
118
+ - lib/sequel/privacy/viewer_context.rb
119
+ - rbi/sequel_privacy.rbi
120
+ homepage: https://github.com/arbales/sequel-privacy
121
+ licenses:
122
+ - MIT
123
+ metadata:
124
+ homepage_uri: https://github.com/arbales/sequel-privacy
125
+ source_code_uri: https://github.com/arbales/sequel-privacy
126
+ changelog_uri: https://github.com/arbales/sequel-privacy/blob/main/CHANGELOG.md
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 3.0.0
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ requirements: []
141
+ rubygems_version: 3.6.9
142
+ specification_version: 4
143
+ summary: Privacy enforcement plugin for Sequel models
144
+ test_files: []