verify_it 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef477abbd90cd2cccf84c643e7d2f9701f0156a9f98d2ac8540af3faad6cc296
4
- data.tar.gz: 45a42d67357c0fb8f57c40f371274b97c80d5c2369a386758f15be965e11e3c2
3
+ metadata.gz: a41100a91ec8bb6febdc4f760c8b1e2217353e9f606fe95efeae2b8e4ddac027
4
+ data.tar.gz: 2afcdf2a1588b1e74510a7f1a3c24f61f679a47f9e9ed5e488d98e43f5971f3c
5
5
  SHA512:
6
- metadata.gz: 8deb185375b951d67087946e05512db44eca245dde3a6054b664745b41f0753fecb2b5702efd6ce58ac461cf86413ef15634f5f4452d2738b31b17e076f5eb6c
7
- data.tar.gz: bfe9967aad2dacc5c62bfa8dc16dd9adfbec268be7a2bf2e160d36c2edc18b5cdcbad33b41fc5aee2d4e8fb6ea630c4b9557a0e295f3c20794057afec292b705
6
+ metadata.gz: df9fbe710460044df86b666b7b04258d09ec05afba41eaffb6db80de641a3b6989a224dd67e3aa38a6a4c4a76b52fc98ff99e8fe08b10dd9a5756b5f28542e33
7
+ data.tar.gz: 88497353ebc57ab8076b38c16d499f7f05052cbdc61f2e2423eb61eecbb555b454adfcebac341add0e3180d879b0856273b7e2a973ba128443d69d5e9f7b9217
data/CHANGELOG.md CHANGED
@@ -1,11 +1,22 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.1.1] - 2026-03-02
4
+
5
+ ### Fixed
6
+ - **Verifiable concern now supports multiple channels** - `verifies` now generates channel-specific method names (`send_sms_code`, `verify_email_code`) instead of generic names that overwrote each other
7
+ - Added validation for channel parameter (must be `:sms` or `:email`)
8
+ - Added validation for attribute existence at definition time
9
+ - Added detection of method name conflicts
10
+
3
11
  ### Added
4
- - CLI installer command (`verify_it install`) for Rails applications
5
- - Interactive storage backend selection (Memory, Redis, Database)
6
- - Automatic initializer generation with storage-specific configuration
7
- - Automatic migration generation for database storage
8
- - Comprehensive CLI specs
12
+ - Comprehensive specs for Verifiable module (22 examples)
13
+ - Channel-based method generation: `send_{channel}_code`, `verify_{channel}_code`, `cleanup_{channel}_verification`
14
+ - Support for multiple verifiable attributes per model (e.g., both phone_number and email)
15
+
16
+ ### Documentation
17
+ - Updated README with channel-based API examples
18
+ - Added context parameter examples (custom message templates, tracking metadata)
19
+ - Updated Rails integration section with correct method names
9
20
 
10
21
  ## [0.1.0] - 2026-03-01
11
22
 
data/README.md CHANGED
@@ -394,12 +394,12 @@ bundle exec rake build # Build gem
394
394
 
395
395
  ## Roadmap
396
396
 
397
- - [ ] Database storage adapter
397
+ - [x] Database storage adapter
398
398
  - [ ] Voice verification support
399
399
  - [ ] WebAuthn integration
400
400
  - [ ] Backup code generation
401
401
  - [ ] Multi-factor authentication helpers
402
- - [ ] Rails generators
402
+ - [x] Rails installer (CLI)
403
403
 
404
404
  ## Contributing
405
405
 
@@ -6,7 +6,26 @@ module VerifyIt
6
6
 
7
7
  module ClassMethods
8
8
  def verifies(attribute, channel: :sms)
9
- define_method("send_verification_code") do |context: {}|
9
+ # Validate channel
10
+ unless %i[sms email].include?(channel)
11
+ raise ArgumentError, "Invalid channel: #{channel}. Must be :sms or :email"
12
+ end
13
+
14
+ # Validate attribute exists (check at definition time)
15
+ unless method_defined?(attribute) || private_method_defined?(attribute)
16
+ raise ArgumentError, "Attribute :#{attribute} does not respond to #{name}"
17
+ end
18
+
19
+ # Check for method conflicts
20
+ send_method = "send_#{channel}_code"
21
+ verify_method = "verify_#{channel}_code"
22
+ cleanup_method = "cleanup_#{channel}_verification"
23
+
24
+ if method_defined?(send_method)
25
+ raise ArgumentError, "Method #{send_method} is already defined on #{name}"
26
+ end
27
+
28
+ define_method(send_method) do |context: {}|
10
29
  identifier = send(attribute)
11
30
  VerifyIt.send_code(
12
31
  to: identifier,
@@ -16,7 +35,7 @@ module VerifyIt
16
35
  )
17
36
  end
18
37
 
19
- define_method("verify_code") do |code|
38
+ define_method(verify_method) do |code|
20
39
  identifier = send(attribute)
21
40
  VerifyIt.verify_code(
22
41
  to: identifier,
@@ -25,7 +44,7 @@ module VerifyIt
25
44
  )
26
45
  end
27
46
 
28
- define_method("cleanup_verification") do
47
+ define_method(cleanup_method) do
29
48
  identifier = send(attribute)
30
49
  VerifyIt.cleanup(
31
50
  to: identifier,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module VerifyIt
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
data/lib/verify_it.rb CHANGED
@@ -13,6 +13,7 @@ require_relative "verify_it/delivery/base"
13
13
  require_relative "verify_it/delivery/sms_delivery"
14
14
  require_relative "verify_it/delivery/email_delivery"
15
15
  require_relative "verify_it/verifier"
16
+ require_relative "verify_it/verifiable"
16
17
 
17
18
  module VerifyIt
18
19
  class Error < StandardError; end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: verify_it
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremias Ramirez