better_auth-redis-storage 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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +6 -0
- data/README.md +31 -0
- data/lib/better_auth/redis_storage/version.rb +7 -0
- data/lib/better_auth/redis_storage.rb +59 -0
- metadata +139 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: fec3e6f91d2678257084d87d27d230b401dde8dc9c4d852e47d5a0bc5c910de8
|
|
4
|
+
data.tar.gz: 5eee5736114ba877ba5e7308ba5da7d400a08686b9b46d01a98e57fda4bb24cc
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 3890b8e529be3471125825d684da70a0280988c6c554683bfbabba6cc26612ca0d3508377ae49592c323101b2f52feb363807e996236b2c2a76640a949253226
|
|
7
|
+
data.tar.gz: bf77b96b0f29ad9c86a4ae11fc00c92a6a6a9f28aa8e02d233c4ae38a39285a63bd126b90c1b41dadc4490f993fdc88f1d0829e8b5af8fa27cff157d5f8e56fe
|
data/CHANGELOG.md
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# better_auth-redis-storage
|
|
2
|
+
|
|
3
|
+
Redis secondary storage package for Better Auth Ruby.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Add the gem and require the package before configuring auth:
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
gem "better_auth-redis-storage"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
require "redis"
|
|
15
|
+
require "better_auth/redis_storage"
|
|
16
|
+
|
|
17
|
+
redis = Redis.new(url: ENV.fetch("REDIS_URL"))
|
|
18
|
+
|
|
19
|
+
auth = BetterAuth.auth(
|
|
20
|
+
secret: ENV.fetch("BETTER_AUTH_SECRET"),
|
|
21
|
+
database: :memory,
|
|
22
|
+
secondary_storage: BetterAuth::RedisStorage.new(client: redis)
|
|
23
|
+
)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Notes
|
|
27
|
+
|
|
28
|
+
This package depends on the official `redis` gem. Keeping Redis storage outside `better_auth` avoids installing Redis client dependencies for applications that do not use secondary storage.
|
|
29
|
+
|
|
30
|
+
`secondary_storage` is used by Better Auth for session payload storage, active-session indexes, and rate limiting when `rate_limit: { storage: "secondary-storage" }` is configured.
|
|
31
|
+
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "better_auth"
|
|
4
|
+
require_relative "redis_storage/version"
|
|
5
|
+
|
|
6
|
+
module BetterAuth
|
|
7
|
+
class RedisStorage
|
|
8
|
+
DEFAULT_KEY_PREFIX = "better-auth:"
|
|
9
|
+
|
|
10
|
+
attr_reader :client, :key_prefix
|
|
11
|
+
|
|
12
|
+
def self.build(client:, key_prefix: DEFAULT_KEY_PREFIX)
|
|
13
|
+
new(client: client, key_prefix: key_prefix)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def initialize(client:, key_prefix: DEFAULT_KEY_PREFIX)
|
|
17
|
+
@client = client
|
|
18
|
+
@key_prefix = key_prefix.to_s
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def get(key)
|
|
22
|
+
client.get(prefix_key(key))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def set(key, value, ttl = nil)
|
|
26
|
+
prefixed_key = prefix_key(key)
|
|
27
|
+
if ttl&.to_i&.positive?
|
|
28
|
+
client.setex(prefixed_key, ttl.to_i, value)
|
|
29
|
+
else
|
|
30
|
+
client.set(prefixed_key, value)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def delete(key)
|
|
35
|
+
client.del(prefix_key(key))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def list_keys
|
|
39
|
+
client.keys("#{key_prefix}*").map { |key| unprefix_key(key) }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def clear
|
|
43
|
+
keys = client.keys("#{key_prefix}*")
|
|
44
|
+
client.del(*keys) unless keys.empty?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
alias_method :listKeys, :list_keys
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
def prefix_key(key)
|
|
52
|
+
"#{key_prefix}#{key}"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def unprefix_key(key)
|
|
56
|
+
key.sub(/\A#{Regexp.escape(key_prefix)}/, "")
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: better_auth-redis-storage
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Sebastian Sala
|
|
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: better_auth
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0.1'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0.1'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: redis
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '5'
|
|
33
|
+
- - "<"
|
|
34
|
+
- !ruby/object:Gem::Version
|
|
35
|
+
version: '6'
|
|
36
|
+
type: :runtime
|
|
37
|
+
prerelease: false
|
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
39
|
+
requirements:
|
|
40
|
+
- - ">="
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: '5'
|
|
43
|
+
- - "<"
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '6'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: bundler
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
requirements:
|
|
50
|
+
- - "~>"
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '2.5'
|
|
53
|
+
type: :development
|
|
54
|
+
prerelease: false
|
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - "~>"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '2.5'
|
|
60
|
+
- !ruby/object:Gem::Dependency
|
|
61
|
+
name: minitest
|
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - "~>"
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '5.25'
|
|
67
|
+
type: :development
|
|
68
|
+
prerelease: false
|
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
70
|
+
requirements:
|
|
71
|
+
- - "~>"
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '5.25'
|
|
74
|
+
- !ruby/object:Gem::Dependency
|
|
75
|
+
name: rake
|
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - "~>"
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '13.2'
|
|
81
|
+
type: :development
|
|
82
|
+
prerelease: false
|
|
83
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
84
|
+
requirements:
|
|
85
|
+
- - "~>"
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '13.2'
|
|
88
|
+
- !ruby/object:Gem::Dependency
|
|
89
|
+
name: standardrb
|
|
90
|
+
requirement: !ruby/object:Gem::Requirement
|
|
91
|
+
requirements:
|
|
92
|
+
- - "~>"
|
|
93
|
+
- !ruby/object:Gem::Version
|
|
94
|
+
version: '1.0'
|
|
95
|
+
type: :development
|
|
96
|
+
prerelease: false
|
|
97
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
98
|
+
requirements:
|
|
99
|
+
- - "~>"
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '1.0'
|
|
102
|
+
description: Adds a Redis-backed secondary storage adapter for Better Auth Ruby sessions
|
|
103
|
+
and rate limiting.
|
|
104
|
+
email:
|
|
105
|
+
- sebastian.sala.tech@gmail.com
|
|
106
|
+
executables: []
|
|
107
|
+
extensions: []
|
|
108
|
+
extra_rdoc_files: []
|
|
109
|
+
files:
|
|
110
|
+
- CHANGELOG.md
|
|
111
|
+
- README.md
|
|
112
|
+
- lib/better_auth/redis_storage.rb
|
|
113
|
+
- lib/better_auth/redis_storage/version.rb
|
|
114
|
+
homepage: https://github.com/sebasxsala/better-auth
|
|
115
|
+
licenses:
|
|
116
|
+
- MIT
|
|
117
|
+
metadata:
|
|
118
|
+
homepage_uri: https://github.com/sebasxsala/better-auth
|
|
119
|
+
source_code_uri: https://github.com/sebasxsala/better-auth
|
|
120
|
+
changelog_uri: https://github.com/sebasxsala/better-auth/blob/main/packages/better_auth-redis-storage/CHANGELOG.md
|
|
121
|
+
bug_tracker_uri: https://github.com/sebasxsala/better-auth/issues
|
|
122
|
+
rdoc_options: []
|
|
123
|
+
require_paths:
|
|
124
|
+
- lib
|
|
125
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
|
+
requirements:
|
|
127
|
+
- - ">="
|
|
128
|
+
- !ruby/object:Gem::Version
|
|
129
|
+
version: 3.2.0
|
|
130
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
|
+
requirements:
|
|
132
|
+
- - ">="
|
|
133
|
+
- !ruby/object:Gem::Version
|
|
134
|
+
version: '0'
|
|
135
|
+
requirements: []
|
|
136
|
+
rubygems_version: 3.6.9
|
|
137
|
+
specification_version: 4
|
|
138
|
+
summary: Redis secondary storage package for Better Auth Ruby
|
|
139
|
+
test_files: []
|