morpho 0.2.0 → 0.2.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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +39 -0
  3. data/app/api/morpho/entities/authentication_token.rb +1 -1
  4. data/app/api/morpho/entities/base.rb +7 -0
  5. data/app/api/morpho/entities/user.rb +2 -1
  6. data/app/api/morpho/entities/user_sign_in.rb +1 -1
  7. data/app/api/morpho/entities/user_sign_up.rb +1 -1
  8. data/app/api/morpho/resources/users.rb +2 -2
  9. data/app/mailers/morpho/application_mailer.rb +12 -0
  10. data/app/models/morpho/user.rb +4 -1
  11. data/app/views/morpho/user_mailer/activation_needed_email.html.erb +4 -7
  12. data/app/views/morpho/user_mailer/activation_needed_email.text.erb +4 -7
  13. data/app/views/morpho/user_mailer/activation_success_email.html.erb +4 -7
  14. data/app/views/morpho/user_mailer/activation_success_email.text.erb +4 -7
  15. data/app/views/morpho/user_mailer/reset_password_email.html.erb +4 -7
  16. data/app/views/morpho/user_mailer/reset_password_email.text.erb +4 -7
  17. data/app/views/morpho/user_mailer/unlock_token_email.html.erb +4 -6
  18. data/app/views/morpho/user_mailer/unlock_token_email.text.erb +4 -6
  19. data/config/locales/morpho.en.yml +60 -0
  20. data/config/locales/morpho.es.yml +66 -0
  21. data/lib/generators/morpho/install/templates/app/api/{morphp → morpho}/api.rb +0 -0
  22. data/lib/generators/morpho/install/templates/config/initializers/morpho.rb +9 -9
  23. data/lib/morpho/configurations/mailer.rb +4 -0
  24. data/lib/morpho/engine.rb +24 -5
  25. data/lib/morpho/validators/contain_number_validator.rb +17 -0
  26. data/lib/morpho/validators/contain_symbol_validator.rb +17 -0
  27. data/lib/morpho/validators/contain_uppercase_validator.rb +17 -0
  28. data/lib/morpho/version.rb +1 -1
  29. data/lib/morpho.rb +3 -0
  30. metadata +8 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0d84313d4452dbe5204a3dd23dac77e6e2cbd537efba0982b0e6ce3a9dfcd11
4
- data.tar.gz: ec2199d2a15089e22b168b101953fd53926cf98c6615d1f9091f942e19475c2a
3
+ metadata.gz: d7fca5e64b05dd61217178c941e7f0dece7ad1f5088184e9463b80cd11c16414
4
+ data.tar.gz: e89d1a456a7b76f24f18bcdde9f5a71a3268258fe2b86f1e868b12cff77a106d
5
5
  SHA512:
6
- metadata.gz: e8daf2d2f98414e9cda76198a80f75930cd67859c8db5d6da14ada1620c497cd826c6a27ec13d5aa27142938f69b46254da910c9f1054464418290489d5ba7fa
7
- data.tar.gz: be14f1b03a1e9ce1788b1e7728f56675cfee839677ca530c3c8aac4921149d709ea08bf4257a76adc22721cd516793307ab7f5e04c5b8050846e6e2e94188431
6
+ metadata.gz: b36cf4a0152b861d01e3e4fe75c0f7c40f31ddfca3209ce07dfcc0f7fed4596d7cf3fc640b3ca188bfdb44de0a0523158b648e7dd074b49b77aa8bb5622cac03
7
+ data.tar.gz: 91a25b1c00d433111234446830d59eb26a538288519f0f7930434a26e9331178bd579793712683c75d7e94d2aa72320b7d0a961d5c75ff62a698f810503652f5
data/README.md CHANGED
@@ -21,6 +21,45 @@ Or install it yourself as:
21
21
  $ gem install morpho
22
22
  ```
23
23
 
24
+ ## Validators
25
+
26
+ ### Contain number validator
27
+
28
+ Value must contain at least 1 number.
29
+
30
+ options:
31
+ * **message**: A custom message. Defaults to `I18n.t('morpho.labels.validators.contain_number')`
32
+
33
+ ```ruby
34
+ class User < ApplicationRecord
35
+ validates :password, :'morpho/validators/contain_number' => true
36
+ end
37
+ ```
38
+
39
+ ### Contain uppercase validator
40
+ Value must contain at least 1 uppercase letter.
41
+
42
+ options:
43
+ * **message**: A custom message. Defaults to `I18n.t('morpho.labels.validators.contain_uppercase')`
44
+
45
+ ```ruby
46
+ class User < ApplicationRecord
47
+ validates :password, :'morpho/validators/contain_uppercase' => true
48
+ end
49
+ ```
50
+
51
+ ### Contain symbol validator
52
+ Value must contain at least 1 special char.
53
+
54
+ options:
55
+ * **message**: A custom message. Defaults to `I18n.t('morpho.labels.validators.contain_symbol')`
56
+
57
+ ```ruby
58
+ class User < ApplicationRecord
59
+ validates :password, :'morpho/validators/contain_symbol' => true
60
+ end
61
+ ```
62
+
24
63
  ## Contributing
25
64
  Contribution directions go here.
26
65
 
@@ -1,6 +1,6 @@
1
1
  module Morpho
2
2
  module Entities
3
- class AuthenticationToken < ::Grape::Entity
3
+ class AuthenticationToken < ::Morpho::Entities::Base
4
4
  expose :token, documentation: { type: 'string', desc: 'User authentication token', required: true }
5
5
  expose :expires_at, documentation: { type: 'string', desc: 'Authentication token expiration date in millis', required: true }
6
6
  end
@@ -0,0 +1,7 @@
1
+ module Morpho
2
+ module Entities
3
+ class Base < ::Grape::Entity
4
+ root 'data', 'data'
5
+ end
6
+ end
7
+ end
@@ -1,6 +1,7 @@
1
1
  module Morpho
2
2
  module Entities
3
- class User < ::Grape::Entity
3
+ class User < ::Morpho::Entities::Base
4
+ root 'data', 'data'
4
5
  expose :email, documentation: { type: 'string', desc: 'User email address' }
5
6
  end
6
7
  end
@@ -1,6 +1,6 @@
1
1
  module Morpho
2
2
  module Entities
3
- class UserSignIn < ::Grape::Entity
3
+ class UserSignIn < ::Morpho::Entities::Base
4
4
  expose :email, documentation: { type: 'string', desc: 'User email address' }
5
5
  expose :password, documentation: { type: 'string', desc: 'User password' }
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Morpho
2
2
  module Entities
3
- class UserSignUp < ::Grape::Entity
3
+ class UserSignUp < ::Morpho::Entities::Base
4
4
  expose :email, documentation: { type: 'string', desc: 'User email address' }
5
5
  expose :password, documentation: { type: 'string', desc: 'User password' }
6
6
  expose :password_confirmation, documentation: { type: 'string', desc: 'User password confirmation' }
@@ -8,10 +8,10 @@ module Morpho
8
8
  success Morpho::Entities::User
9
9
  end
10
10
  params do
11
- requires :user, type: Morpho::Entities::UserSignUp
11
+ requires :data, type: Morpho::Entities::UserSignUp
12
12
  end
13
13
  post do
14
- register(params[:user])
14
+ register(params[:data])
15
15
  end
16
16
  end
17
17
  end
@@ -1,5 +1,17 @@
1
1
  module Morpho
2
2
  class ApplicationMailer < ActionMailer::Base
3
3
  layout 'mailer'
4
+
5
+ before_action :attach_logo!
6
+
7
+ protected
8
+
9
+ def attach_logo!
10
+ attachments.inline['logo.png'] = File.read(
11
+ Rails.root.join('public', 'images', 'mailer-logo.png')
12
+ )
13
+ rescue StandardError
14
+ # do nothing
15
+ end
4
16
  end
5
17
  end
@@ -5,7 +5,10 @@ module Morpho
5
5
  has_many :authentications, dependent: :destroy
6
6
  accepts_nested_attributes_for :authentications
7
7
 
8
- validates :password, length: { minimum: 12 }
8
+ validates :password, length: { minimum: 12 },
9
+ :'morpho/validators/contain_number' => true,
10
+ :'morpho/validators/contain_uppercase' => true,
11
+ :'morpho/validators/contain_symbol' => true
9
12
  validates :password, confirmation: true
10
13
  validates :email, uniqueness: true
11
14
  validates_email_format_of :email
@@ -1,7 +1,4 @@
1
- <p>Welcome <%= @user.email %>,</p>
2
-
3
- <p>You have successfully signed up, you're just a step behind to finish.</p>
4
-
5
- <p>To verify your user email address and activate your user account, just follow this <a href=" <%= @url %>">link</a>.</p>
6
-
7
- <p>Thanks for joining and have a great day!</p>
1
+ <%= raw(I18n.t('morpho.mailer.activation_needed.body_html',
2
+ email: @user.email,
3
+ url: @url
4
+ )) %>
@@ -1,7 +1,4 @@
1
- Welcome <%= @user.email %>,
2
-
3
- You have successfully signed up, you're just a step behind to finish.
4
-
5
- To verify your user email address and activate your user account, just follow this link: <%= @url %>.
6
-
7
- Thanks for joining and have a great day!
1
+ <%= raw(I18n.t('morpho.mailer.activation_needed.body_text',
2
+ email: @user.email,
3
+ url: @url
4
+ )) %>
@@ -1,7 +1,4 @@
1
- <p>Congratulations, <%= @user.email %>!</p>
2
-
3
- <p>You have successfully activated your user account.</p>
4
-
5
- <p>To login to the site, just follow this link: <%= @url %>.</p>
6
-
7
- <p>Thanks for joining and have a great day!</p>
1
+ <%= raw(I18n.t('morpho.mailer.activation_success.body_html',
2
+ email: @user.email,
3
+ url: @url
4
+ )) %>
@@ -1,7 +1,4 @@
1
- Congratulations, <%= @user.email %>!
2
-
3
- You have successfully activated your user account.
4
-
5
- To login to the site, just follow this link: <%= @url %>.
6
-
7
- Thanks for joining and have a great day!
1
+ <%= raw(I18n.t('morpho.mailer.activation_success.body_text',
2
+ email: @user.email,
3
+ url: @url
4
+ )) %>
@@ -1,7 +1,4 @@
1
- <p>Hello <%= @user.email %>,</p>
2
-
3
- <p>You have requested to reset your password.</p>
4
-
5
- <p>To choose a new password, just follow this <a href=" <%= @url %>">link</a>.</p>
6
-
7
- <p>Have a great day!</p>
1
+ <%= raw(I18n.t('morpho.mailer.reset_password.body_html',
2
+ email: @user.email,
3
+ url: @url
4
+ )) %>
@@ -1,7 +1,4 @@
1
- Hello <%= @user.email %>,
2
-
3
- You have requested to reset your password.
4
-
5
- To choose a new password, just follow this link: <%= @url %>.
6
-
7
- Have a great day!
1
+ <%= raw(I18n.t('morpho.mailer.reset_password.body_text',
2
+ email: @user.email,
3
+ url: @url
4
+ )) %>
@@ -1,7 +1,5 @@
1
- <p>Hello <%= @user.email %>,</p>
1
+ <%= raw(I18n.t('morpho.mailer.unlock_token.body_html',
2
+ email: @user.email,
3
+ url: @url
4
+ )) %>
2
5
 
3
- <p>Your account has been locked due to failed login attempts activity.</p>
4
-
5
- <p>To unlock your account now, just follow this <a href=" <%= @url %>">link</a>. Anyway it will be automatically unlocked in an hour.</p>
6
-
7
- <p>Have a great day!</p>
@@ -1,7 +1,5 @@
1
- Hello <%= @user.email %>,
1
+ <%= raw(I18n.t('morpho.mailer.unlock_token.body_text',
2
+ email: @user.email,
3
+ url: @url
4
+ )) %>
2
5
 
3
- Your account has been locked due to failed login attempts activity.
4
-
5
- To unlock your account now, just follow this link: <%= @url %>. Anyway it will be automatically unlocked in an hour.
6
-
7
- Have a great day!
@@ -1,6 +1,10 @@
1
1
  en:
2
2
  morpho:
3
3
  labels:
4
+ validators:
5
+ contain_symbol: 'must contain a symbol'
6
+ contain_number: 'must contain a number'
7
+ contain_uppercase: 'must contain a uppercase letter'
4
8
  sessions:
5
9
  sign_in: 'Sign in'
6
10
  sign_up: 'Sign up with a new user account'
@@ -62,12 +66,68 @@ en:
62
66
  mailer:
63
67
  activation_needed:
64
68
  subject: 'You have successfully signed up'
69
+ body_html: |
70
+ <p>Welcome %{email},</p>
71
+ <p>You have successfully signed up, you're just a step behind to finish.</p>
72
+ <p>To verify your user email address and activate your user account, just follow this <a href="%{url}">link</a>.</p>
73
+ <p>Thanks for joining and have a great day!</p>
74
+ body_text: |
75
+ Welcome %{email},
76
+
77
+ You have successfully signed up, you're just a step behind to finish.
78
+
79
+ To verify your user email address and activate your user account, just follow this link: %{url}.
80
+
81
+ Thanks for joining and have a great day!
65
82
  activation_success:
66
83
  subject: 'Your account is now activated'
84
+ body_html: |
85
+ <p>Congratulations, %{email}!</p>
86
+ <p>You have successfully activated your user account.</p>
87
+ <p>To login to the site, just follow this link: %{url}.</p>
88
+ <p>Thanks for joining and have a great day!</p>
89
+
90
+ body_text: |
91
+ Congratulations, %{email}!
92
+
93
+ You have successfully activated your user account.
94
+
95
+ To login to the site, just follow this link: %{url}.
96
+
97
+ Thanks for joining and have a great day!
98
+
67
99
  reset_password:
68
100
  subject: 'You have requested to reset your password'
101
+ body_html: |
102
+ <p>Hello %{email},</p>
103
+ <p>You have requested to reset your password.</p>
104
+ <p>To choose a new password, just follow this <a href="%{url}">link</a>.</p>
105
+ <p>Have a great day!</p>
106
+ body_text: |
107
+ Hello %{email},
108
+
109
+ You have requested to reset your password.
110
+
111
+ To choose a new password, just follow this link: %{url}.
112
+
113
+ Have a great day!
114
+
69
115
  unlock_token:
70
116
  subject: 'Your account has been locked'
117
+ body_html: |
118
+ <p>Hello %{email},</p>
119
+ <p>Your account has been locked due to failed login attempts activity.</p>
120
+ <p>To unlock your account now, just follow this <a href=" %{url}">link</a>. Anyway it will be automatically unlocked in an hour.</p>
121
+ <p>Have a great day!</p>
122
+ body_text: |
123
+ Hello %{email},
124
+
125
+ Your account has been locked due to failed login attempts activity.
126
+
127
+ To unlock your account now, just follow this link: %{url}. Anyway it will be automatically unlocked in an hour.
128
+
129
+ Have a great day!
130
+
71
131
  api:
72
132
  messages:
73
133
  bad_request: 'Bad request'
@@ -0,0 +1,66 @@
1
+ es:
2
+ morpho:
3
+ mailer:
4
+ activation_needed:
5
+ subject: 'Te has registrado correctamente'
6
+ body_html: |
7
+ <p>Bienvenido %{email},</p>
8
+ <p>Te has registrado exitosamente, solo estás un paso atrás para terminar.</p>
9
+ <p>Para verificar su dirección de correo electrónico de usuario y activar su cuenta de usuario, simplemente siga este <a href="%{url}">enlace</a>.</p>
10
+ <p>Gracias por unirte y que tengas un gran día!</p>
11
+ body_text: |
12
+ Bienvenido %{email},
13
+
14
+ Te has registrado exitosamente, solo estás un paso atrás para terminar.
15
+
16
+ Para verificar su dirección de correo electrónico de usuario y activar su cuenta de usuario, simplemente siga este enlace: %{url}.
17
+
18
+ Gracias por unirte y que tengas un gran día!
19
+ activation_success:
20
+ subject: 'Tu cuenta ya está activada'
21
+ body_html: |
22
+ <p>Felicidades, %{email}!</p>
23
+ <p>Has activado exitosamente tu cuenta de usuario.</p>
24
+ <p>Para iniciar sesión en el sitio, simplemente siga este enlace: %{url}.</p>
25
+ <p>Gracias por unirte y que tengas un gran día!</p>
26
+
27
+ body_text: |
28
+ Felicidades, %{email}!
29
+
30
+ Has activado exitosamente tu cuenta de usuario.
31
+
32
+ Para iniciar sesión en el sitio, simplemente siga este enlace: %{url}.
33
+
34
+ Gracias por unirte y que tengas un gran día!
35
+
36
+ reset_password:
37
+ subject: 'Has solicitado restablecer tu contraseña'
38
+ body_html: |
39
+ <p>Hola %{email},</p>
40
+ <p>Has solicitado restablecer tu contraseña.</p>
41
+ <p>Para elegir una nueva contraseña, simplemente siga este <a href="%{url}">enlace</a>.</p>
42
+ <p>¡Que tengas un gran día!</p>
43
+ body_text: |
44
+ Hola %{email},
45
+
46
+ Has solicitado restablecer tu contraseña.
47
+
48
+ Para elegir una nueva contraseña, simplemente siga este: %{url}.
49
+
50
+ ¡Que tengas un gran día!
51
+
52
+ unlock_token:
53
+ subject: 'Su cuenta ha sido bloqueada'
54
+ body_html: |
55
+ <p>Hola %{email},</p>
56
+ <p>Su cuenta ha sido bloqueada debido a una actividad fallida de intentos de inicio de sesión.</p>
57
+ <p>Para desbloquear tu cuenta ahora, solo sigue este <a href=" %{url}">enlace</a>. De todos modos se desbloqueará automáticamente en una hora.</p>
58
+ <p>¡Que tengas un gran día!</p>
59
+ body_text: |
60
+ Hola %{email},
61
+
62
+ Su cuenta ha sido bloqueada debido a una actividad fallida de intentos de inicio de sesión.
63
+
64
+ Para desbloquear tu cuenta ahora, solo sigue este enlace: %{url}. De todos modos se desbloqueará automáticamente en una hora.
65
+
66
+ ¡Que tengas un gran día!
@@ -1,12 +1,12 @@
1
1
  Morpho.configure do |config|
2
- config.host = 'localhost:3000'
3
- config.mailer.from = ''
4
- config.mailer.address = 'smtp.mailtrap.io'
5
- config.mailer.user_name = ''
6
- config.mailer.password = ''
7
- config.mailer.port = 2525
8
- config.mailer.authentication = 'login'
9
- config.mailer.enable_starttls_auto = false
2
+ config.host = ENV.fetch('HOST', 'localhost:3000')
3
+ config.mailer.from = ENV.fetch('MAILER_FROM', 'no-reply@example.com')
4
+ config.mailer.address = ENV.fetch('MAILER_ADDRESS', 'smtp.mailtrap.io')
5
+ config.mailer.user_name = ENV.fetch('MAILER_USER_NAME', '')
6
+ config.mailer.password = ENV.fetch('MAILER_PASSWORD', '')
7
+ config.mailer.port = ENV.fetch('MAILER_PORT', 2525)
8
+ config.mailer.authentication = ENV.fetch('MAILER_AUTHENTICATION').to_s.to_sym
9
+ config.mailer.enable_starttls_auto = ENV.fetch('MAILER_ENABLE_STARTTLS_AUTO', false)
10
10
  config.jwt.secret = ''
11
11
  config.jwt.algorithm = 'HS256'
12
12
  config.jwt.header = 'Authorization'
@@ -14,4 +14,4 @@ Morpho.configure do |config|
14
14
  config.api.title = ''
15
15
  config.api.description = ''
16
16
  config.auth.failed_login_attempts_limit = 5
17
- end
17
+ end
@@ -8,8 +8,12 @@ module Morpho
8
8
  attr_accessor :port
9
9
  attr_accessor :authentication
10
10
  attr_accessor :enable_starttls_auto
11
+ attr_accessor :perform_deliveries
12
+ attr_accessor :delivery_method
11
13
 
12
14
  def initialize
15
+ self.perform_deliveries = true
16
+ self.delivery_method = :smtp
13
17
  self.from = ''
14
18
  self.address = ''
15
19
  self.user_name = ''
data/lib/morpho/engine.rb CHANGED
@@ -14,18 +14,21 @@ module Morpho
14
14
  end
15
15
 
16
16
  initializer 'morpho.configurations', after: :load_config_initializers do |app|
17
- ActionMailer::Base.delivery_method = :smtp
18
- ActionMailer::Base.perform_deliveries = true
17
+ mailer = ActionMailer::Base
18
+ mailer.delivery_method = Morpho.config.mailer.delivery_method
19
+ .to_s.to_sym
20
+ mailer.perform_deliveries = Morpho.config.mailer
21
+ .perform_deliveries
19
22
 
20
- ActionMailer::Base.default_options = {
23
+ mailer.default_options = {
21
24
  from: Morpho.config.mailer.from
22
25
  }
23
26
 
24
- ActionMailer::Base.default_url_options = {
27
+ mailer.default_url_options = {
25
28
  host: Morpho.config.host
26
29
  }
27
30
 
28
- ActionMailer::Base.smtp_settings = {
31
+ mailer.smtp_settings = {
29
32
  address: Morpho.config.mailer.address,
30
33
  port: Morpho.config.mailer.port,
31
34
  user_name: Morpho.config.mailer.user_name,
@@ -34,5 +37,21 @@ module Morpho
34
37
  enable_starttls_auto: Morpho.config.mailer.enable_starttls_auto
35
38
  }
36
39
  end
40
+
41
+ def self.controllers_path
42
+ Pathname.new(
43
+ Morpho::Engine.root.join(
44
+ 'app', 'controllers', 'morpho'
45
+ )
46
+ )
47
+ end
48
+
49
+ def self.models_path
50
+ Pathname.new(
51
+ Morpho::Engine.root.join(
52
+ 'app', 'models', 'morpho'
53
+ )
54
+ )
55
+ end
37
56
  end
38
57
  end
@@ -0,0 +1,17 @@
1
+ module Morpho
2
+ module Validators
3
+ class ContainNumberValidator < ActiveModel::EachValidator
4
+ NUMBER_FORMAT = /\A(?=.*\d)/x
5
+
6
+ def validate_each(record, attribute, value)
7
+ unless value =~ self.class::NUMBER_FORMAT
8
+ record.errors.add(
9
+ attribute,
10
+ options[:message] ||
11
+ I18n.t('morpho.labels.validators.contain_number')
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Morpho
2
+ module Validators
3
+ class ContainSymbolValidator < ActiveModel::EachValidator
4
+ SYMBOL_FORMAT = /\A(?=.*[[:^alnum:]])/x
5
+
6
+ def validate_each(record, attribute, value)
7
+ unless value =~ self.class::SYMBOL_FORMAT
8
+ record.errors.add(
9
+ attribute,
10
+ options[:message] ||
11
+ I18n.t('morpho.labels.validators.contain_symbol')
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Morpho
2
+ module Validators
3
+ class ContainUppercaseValidator < ActiveModel::EachValidator
4
+ UPPERCASE_FORMAT = /\A(?=.*[A-Z])/x
5
+
6
+ def validate_each(record, attribute, value)
7
+ unless value =~ self.class::UPPERCASE_FORMAT
8
+ record.errors.add(
9
+ attribute,
10
+ options[:message] ||
11
+ I18n.t('morpho.labels.validators.contain_uppercase')
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module Morpho
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
data/lib/morpho.rb CHANGED
@@ -2,6 +2,9 @@ require 'morpho/loader'
2
2
  require 'morpho/engine'
3
3
  require 'morpho/version'
4
4
  require 'morpho/configuration'
5
+ require 'morpho/validators/contain_number_validator'
6
+ require 'morpho/validators/contain_uppercase_validator'
7
+ require 'morpho/validators/contain_symbol_validator'
5
8
 
6
9
  module Morpho
7
10
  class << self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morpho
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hugo Gilmar Erazo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-16 00:00:00.000000000 Z
11
+ date: 2018-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -237,6 +237,7 @@ files:
237
237
  - app/api/concerns/morpho/grape/user_registration.rb
238
238
  - app/api/concerns/morpho/grape/user_unlock.rb
239
239
  - app/api/morpho/entities/authentication_token.rb
240
+ - app/api/morpho/entities/base.rb
240
241
  - app/api/morpho/entities/user.rb
241
242
  - app/api/morpho/entities/user_sign_in.rb
242
243
  - app/api/morpho/entities/user_sign_up.rb
@@ -286,6 +287,7 @@ files:
286
287
  - config/initializers/simple_form.rb
287
288
  - config/initializers/sorcery.rb
288
289
  - config/locales/morpho.en.yml
290
+ - config/locales/morpho.es.yml
289
291
  - config/routes.rb
290
292
  - db/migrate/20180919162009_sorcery_core.rb
291
293
  - db/migrate/20180919162055_sorcery_remember_me.rb
@@ -295,7 +297,7 @@ files:
295
297
  - db/migrate/20180919162059_sorcery_activity_logging.rb
296
298
  - db/migrate/20180919162100_sorcery_external.rb
297
299
  - lib/generators/morpho/install/install_generator.rb
298
- - lib/generators/morpho/install/templates/app/api/morphp/api.rb
300
+ - lib/generators/morpho/install/templates/app/api/morpho/api.rb
299
301
  - lib/generators/morpho/install/templates/config/initializers/morpho.rb
300
302
  - lib/generators/morpho/install/templates/public/favicon-16x16.png
301
303
  - lib/generators/morpho/install/templates/public/favicon-32x32.png
@@ -308,6 +310,9 @@ files:
308
310
  - lib/morpho/configurations/mailer.rb
309
311
  - lib/morpho/engine.rb
310
312
  - lib/morpho/loader.rb
313
+ - lib/morpho/validators/contain_number_validator.rb
314
+ - lib/morpho/validators/contain_symbol_validator.rb
315
+ - lib/morpho/validators/contain_uppercase_validator.rb
311
316
  - lib/morpho/version.rb
312
317
  - lib/tasks/morpho_tasks.rake
313
318
  - lib/templates/erb/scaffold/_form.html.erb