morpho 0.2.1 → 0.3.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 +4 -4
- data/app/api/concerns/morpho/grape/jwt_authentication.rb +2 -2
- data/app/api/morpho/entities/error.rb +8 -0
- data/app/assets/stylesheets/morpho/application.css +1 -74
- data/app/controllers/morpho/activations_controller.rb +2 -2
- data/app/models/morpho/user.rb +1 -1
- data/app/views/morpho/activations/failure.html.erb +17 -0
- data/app/views/morpho/activations/new.html.erb +4 -4
- data/app/views/morpho/activations/success.html.erb +17 -0
- data/app/views/morpho/passwords/edit.html.erb +5 -5
- data/app/views/morpho/passwords/new.html.erb +4 -4
- data/app/views/morpho/sessions/new.html.erb +5 -5
- data/app/views/morpho/unlocks/new.html.erb +4 -4
- data/app/views/morpho/users/new.html.erb +6 -6
- data/config/locales/morpho.es.yml +88 -1
- data/lib/morpho.rb +1 -0
- data/lib/morpho/cipher.rb +13 -0
- data/lib/morpho/configurations/auth.rb +2 -1
- data/lib/morpho/loader.rb +1 -0
- data/lib/morpho/version.rb +1 -1
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0338ac8728b7b68d4573d522582176ef24120d8ee32b166a4b47a4cc2c31a80
|
4
|
+
data.tar.gz: f1b00da0632ea3ec3f63c60cbdb01b378b404fdbb6c24696c10cfea8291a29d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11778c465a75f168c1a1a8db55ca70d3b9d70b8f61d0dd69743fcfccfc3e7c3951d9d29c287587ad7ee2e1cadb1d3059f990a0dd51f709e63c060feb9813abd4
|
7
|
+
data.tar.gz: 1674597483b4ea9c1098dd92936796a394c790a2403e9702ae3225949862109cf8d54411540411fb3a0753940ace36a724dd1ce30a02080506f3a797705661ce
|
@@ -55,12 +55,12 @@ module Morpho
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def jwt_encode(payload)
|
58
|
-
|
58
|
+
Morpho::Cipher.jwt_encode(payload)
|
59
59
|
end
|
60
60
|
|
61
61
|
def jwt_decode(token)
|
62
62
|
begin
|
63
|
-
return
|
63
|
+
return Morpho::Cipher.jwt_decode(token)
|
64
64
|
rescue
|
65
65
|
nil
|
66
66
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
module Morpho
|
2
|
+
module Entities
|
3
|
+
class Error < ::Grape::Entity
|
4
|
+
expose :message, documentation: { type: 'string', desc: 'Error standard message', required: true }
|
5
|
+
expose :errors, safe: true, documentation: { type: 'string', desc: 'Error message details', is_array: true }
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
@@ -12,77 +12,4 @@
|
|
12
12
|
*
|
13
13
|
*= require_self
|
14
14
|
*/
|
15
|
-
@import 'https://fonts.googleapis.com/css?family=Raleway:400,300,600';
|
16
|
-
@import 'https://cdn.jsdelivr.net/npm/skeleton-css@2.0.4/css/normalize.css';
|
17
|
-
@import 'https://cdn.jsdelivr.net/npm/skeleton-css@2.0.4/css/skeleton.css';
|
18
|
-
|
19
|
-
body {
|
20
|
-
padding: 2em 1em;
|
21
|
-
}
|
22
|
-
|
23
|
-
.alert {
|
24
|
-
display: block;
|
25
|
-
padding: 1em;
|
26
|
-
border-left: 5px solid;
|
27
|
-
margin-bottom: 1em;
|
28
|
-
}
|
29
|
-
|
30
|
-
.alert-success {
|
31
|
-
background-color: #D5F5E3;
|
32
|
-
border-left-color: #2ECC71;
|
33
|
-
color: #2ECC71;
|
34
|
-
}
|
35
|
-
|
36
|
-
.alert-info {
|
37
|
-
background-color: #D6EAF8;
|
38
|
-
border-left-color: #3498DB;
|
39
|
-
color: #3498DB;
|
40
|
-
}
|
41
|
-
|
42
|
-
.alert-warning {
|
43
|
-
background-color: #FCF3CF;
|
44
|
-
border-left-color: #F1C40F;
|
45
|
-
color: #F1C40F;
|
46
|
-
}
|
47
|
-
|
48
|
-
.alert-error {
|
49
|
-
background-color: #F2D7D5;
|
50
|
-
border-left-color: #C0392B;
|
51
|
-
color: #C0392B;
|
52
|
-
}
|
53
|
-
|
54
|
-
.field_with_errors {
|
55
|
-
padding-bottom: 1em;
|
56
|
-
}
|
57
|
-
|
58
|
-
.field_with_errors input, .field_with_errors textarea, .field_with_errors select {
|
59
|
-
margin-bottom: 0.5em;
|
60
|
-
}
|
61
|
-
|
62
|
-
.field_with_errors span.error {
|
63
|
-
color: #C0392B;
|
64
|
-
text-transform: lowercase;
|
65
|
-
}
|
66
|
-
|
67
|
-
.input label.boolean {
|
68
|
-
display: inline;
|
69
|
-
font-weight: normal;
|
70
|
-
margin-left: 0.5em;
|
71
|
-
}
|
72
|
-
|
73
|
-
ul.unstyled {
|
74
|
-
list-style: none;
|
75
|
-
}
|
76
|
-
|
77
|
-
.sign-in-form, .sign-up-form, .activation-form, .reset-password-form, .unlock-form {
|
78
|
-
position: relative;
|
79
|
-
height: 50vh;
|
80
|
-
}
|
81
|
-
|
82
|
-
.sign-in-form form, .sign-up-form form, .activation-form form, .reset-password-form form, .unlock-form form {
|
83
|
-
position: absolute;
|
84
|
-
top: 50%;
|
85
|
-
left: 50%;
|
86
|
-
transform: translate(-50%, -50%);
|
87
|
-
width: 50vh;
|
88
|
-
}
|
15
|
+
@import 'https://fonts.googleapis.com/css?family=Raleway:400,300,600';
|
@@ -17,9 +17,9 @@ module Morpho
|
|
17
17
|
def show
|
18
18
|
if user && !user.active?
|
19
19
|
user.activate!
|
20
|
-
|
20
|
+
render "morpho/activations/success"
|
21
21
|
else
|
22
|
-
|
22
|
+
render "morpho/activations/failure"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
data/app/models/morpho/user.rb
CHANGED
@@ -5,7 +5,7 @@ module Morpho
|
|
5
5
|
has_many :authentications, dependent: :destroy
|
6
6
|
accepts_nested_attributes_for :authentications
|
7
7
|
|
8
|
-
validates :password, length: { minimum:
|
8
|
+
validates :password, length: { minimum: Morpho.config.auth.password_minimum_length },
|
9
9
|
:'morpho/validators/contain_number' => true,
|
10
10
|
:'morpho/validators/contain_uppercase' => true,
|
11
11
|
:'morpho/validators/contain_symbol' => true
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<div class="tw-flex tw-flex-wrap tw-h-screen tw-items-center tw-content-center tw-text-grey-dark tw-text-4xl">
|
2
|
+
<div class="tw-w-full lg:tw-w-3/4 tw-mx-auto tw-text-center">
|
3
|
+
<h3 class="tw-text-5xl tw-pb-16 tw-text-grey-dark">
|
4
|
+
Token inválido
|
5
|
+
</h3>
|
6
|
+
<div class="">
|
7
|
+
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="tw-pt-24 tw-px-32 ">
|
11
|
+
<p>
|
12
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.
|
13
|
+
</p>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
</div>
|
17
|
+
</div>
|
@@ -1,10 +1,10 @@
|
|
1
|
-
<div class="
|
1
|
+
<div class="">
|
2
2
|
<%= simple_form_for :user, url: send_activation_path do |f| %>
|
3
|
-
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '
|
3
|
+
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '' } %>
|
4
4
|
|
5
|
-
<%= f.submit t('morpho.labels.activations.send_instructions'), class: '
|
5
|
+
<%= f.submit t('morpho.labels.activations.send_instructions'), class: '' %>
|
6
6
|
|
7
|
-
<ul class="
|
7
|
+
<ul class="">
|
8
8
|
<li>
|
9
9
|
<%= link_to t('morpho.labels.activations.sign_in'), sign_in_path %>
|
10
10
|
</li>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<div class="">
|
2
|
+
<div class="">
|
3
|
+
<h3 class="">
|
4
|
+
Cuenta activada
|
5
|
+
</h3>
|
6
|
+
<div class="">
|
7
|
+
<%= link_to 'Iniciar sesión', sign_in_path , class: "" %>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="">
|
11
|
+
<p>
|
12
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.
|
13
|
+
</p>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
</div>
|
17
|
+
</div>
|
@@ -1,12 +1,12 @@
|
|
1
|
-
<div class="
|
1
|
+
<div class="">
|
2
2
|
<%= simple_form_for user, url: change_password_path(token: params[:token]), method: :put do |f| %>
|
3
|
-
<%= f.input :password, required: true, placeholder: '************', input_html: { class: '
|
3
|
+
<%= f.input :password, required: true, placeholder: '************', input_html: { class: '' } %>
|
4
4
|
|
5
|
-
<%= f.input :password_confirmation, required: true, placeholder: '************', input_html: { class: '
|
5
|
+
<%= f.input :password_confirmation, required: true, placeholder: '************', input_html: { class: '' } %>
|
6
6
|
|
7
|
-
<%= f.submit t('morpho.labels.passwords.change_password'), class: '
|
7
|
+
<%= f.submit t('morpho.labels.passwords.change_password'), class: '' %>
|
8
8
|
|
9
|
-
<ul class="
|
9
|
+
<ul class="">
|
10
10
|
<li>
|
11
11
|
<%= link_to t('morpho.labels.passwords.sign_in'), sign_in_path %>
|
12
12
|
</li>
|
@@ -1,10 +1,10 @@
|
|
1
|
-
<div class="
|
1
|
+
<div class="">
|
2
2
|
<%= simple_form_for :user, url: send_reset_password_path do |f| %>
|
3
|
-
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '
|
3
|
+
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '' } %>
|
4
4
|
|
5
|
-
<%= f.submit t('morpho.labels.passwords.send_instructions'), class: 'button-primary
|
5
|
+
<%= f.submit t('morpho.labels.passwords.send_instructions'), class: 'button-primary ' %>
|
6
6
|
|
7
|
-
<ul class="
|
7
|
+
<ul class="">
|
8
8
|
<li>
|
9
9
|
<%= link_to t('morpho.labels.passwords.sign_in'), sign_in_path %>
|
10
10
|
</li>
|
@@ -1,14 +1,14 @@
|
|
1
|
-
<div class="
|
1
|
+
<div class="">
|
2
2
|
<%= simple_form_for :session, url: sign_in_path do |f| %>
|
3
|
-
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '
|
3
|
+
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '' } %>
|
4
4
|
|
5
|
-
<%= f.input :password, required: true, placeholder: '************', input_html: { class: '
|
5
|
+
<%= f.input :password, required: true, placeholder: '************', input_html: { class: '' } %>
|
6
6
|
|
7
7
|
<%= f.input :remember_me, as: :boolean %>
|
8
8
|
|
9
|
-
<%= f.submit t('morpho.labels.sessions.sign_in'), class: '
|
9
|
+
<%= f.submit t('morpho.labels.sessions.sign_in'), class: '' %>
|
10
10
|
|
11
|
-
<ul class="
|
11
|
+
<ul class="">
|
12
12
|
<li>
|
13
13
|
<%= link_to t('morpho.labels.sessions.sign_up'), sign_up_path %>
|
14
14
|
</li>
|
@@ -1,10 +1,10 @@
|
|
1
|
-
<div class="
|
1
|
+
<div class="">
|
2
2
|
<%= simple_form_for :user, url: send_unlock_path do |f| %>
|
3
|
-
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '
|
3
|
+
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '' } %>
|
4
4
|
|
5
|
-
<%= f.submit t('morpho.labels.unlocks.send_instructions'), class: '
|
5
|
+
<%= f.submit t('morpho.labels.unlocks.send_instructions'), class: '' %>
|
6
6
|
|
7
|
-
<ul class="
|
7
|
+
<ul class="">
|
8
8
|
<li>
|
9
9
|
<%= link_to t('morpho.labels.unlocks.sign_in'), sign_in_path %>
|
10
10
|
</li>
|
@@ -1,14 +1,14 @@
|
|
1
|
-
<div class="
|
1
|
+
<div class="">
|
2
2
|
<%= simple_form_for user, url: sign_up_path do |f| %>
|
3
|
-
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '
|
3
|
+
<%= f.input :email, required: true, placeholder: 'johndoe@example.com', input_html: { class: '' } %>
|
4
4
|
|
5
|
-
<%= f.input :password, required: true, placeholder: '************', input_html: { class: '
|
5
|
+
<%= f.input :password, required: true, placeholder: '************', input_html: { class: '' } %>
|
6
6
|
|
7
|
-
<%= f.input :password_confirmation, required: true, placeholder: '************', input_html: { class: '
|
7
|
+
<%= f.input :password_confirmation, required: true, placeholder: '************', input_html: { class: '' } %>
|
8
8
|
|
9
|
-
<%= f.submit t('morpho.labels.users.sign_up'), class: '
|
9
|
+
<%= f.submit t('morpho.labels.users.sign_up'), class: '' %>
|
10
10
|
|
11
|
-
<ul class="
|
11
|
+
<ul class="">
|
12
12
|
<li>
|
13
13
|
<%= link_to t('morpho.labels.users.sign_in'), sign_in_path %>
|
14
14
|
</li>
|
@@ -1,5 +1,68 @@
|
|
1
1
|
es:
|
2
2
|
morpho:
|
3
|
+
labels:
|
4
|
+
validators:
|
5
|
+
contain_symbol: 'debe de contener un caracter especial'
|
6
|
+
contain_number: 'debe de contener un número'
|
7
|
+
contain_uppercase: 'debe de contener al menos una letra en mayúscula'
|
8
|
+
sessions:
|
9
|
+
sign_in: 'Iniciar sesión'
|
10
|
+
sign_up: 'Regístrate con una nueva cuenta de usuario'
|
11
|
+
password_reset: 'Restablecer la contraseña de mi cuenta'
|
12
|
+
unlock: 'Desbloquear mi cuenta'
|
13
|
+
users:
|
14
|
+
sign_up: 'Regístrate'
|
15
|
+
sign_in: 'Inicia sesión con una cuenta de usuario existente'
|
16
|
+
activation: 'Activar mi cuenta'
|
17
|
+
passwords:
|
18
|
+
send_instructions: 'Enviar instrucciones de restablecer contraseña'
|
19
|
+
sign_in: 'Inicia sesión con una cuenta de usuario existente'
|
20
|
+
sign_up: 'Regístrate con una nueva cuenta de usuario'
|
21
|
+
change_password: 'Cambiar mi contraseña'
|
22
|
+
activations:
|
23
|
+
send_instructions: 'Enviar instrucciones de activación'
|
24
|
+
sign_in: 'Inicia sesión con una cuenta de usuario existente'
|
25
|
+
sign_up: 'Regístrate con una nueva cuenta de usuario'
|
26
|
+
unlocks:
|
27
|
+
send_instructions: 'Enviar instrucciones de desbloqueo'
|
28
|
+
sign_in: 'Inicia sesión con una cuenta de usuario existente'
|
29
|
+
sign_up: 'Regístrate con una nueva cuenta de usuario'
|
30
|
+
messages:
|
31
|
+
unauthenticated: 'Necesitas iniciar sesión primero'
|
32
|
+
sessions:
|
33
|
+
create:
|
34
|
+
success: 'Inicia sesión exitosamente'
|
35
|
+
failure: 'Error de inicio de sesión, por favor verifique la información proporcionada'
|
36
|
+
destroy:
|
37
|
+
success: 'Usted cierra la sesión con éxito'
|
38
|
+
users:
|
39
|
+
create:
|
40
|
+
success: 'Regístrese con éxito, recibirá un correo electrónico con instrucciones de activación de cuenta.'
|
41
|
+
failure: 'Registro fallido, por favor revise los errores a continuación'
|
42
|
+
passwords:
|
43
|
+
create:
|
44
|
+
success: 'Recibirá instrucciones para restablecer su contraseña en su buzón de correo electrónico.'
|
45
|
+
failure: 'No se ha encontrado ninguna cuenta de usuario con ese correo electrónico.'
|
46
|
+
edit:
|
47
|
+
success: 'Ingrese su nueva contraseña en los campos de abajo'
|
48
|
+
failure: 'Error al restablecer la contraseña, solicitar un nuevo token de activación'
|
49
|
+
update:
|
50
|
+
success: 'Contraseña modificada correctamente, inicie sesión para continuar'
|
51
|
+
failure: 'Error de cambio de contraseña, por favor revise los errores a continuación'
|
52
|
+
activations:
|
53
|
+
create:
|
54
|
+
success: 'Recibirá instrucciones de activación de cuenta de usuario en su buzón de correo electrónico.'
|
55
|
+
failure: 'Ninguna cuenta de usuario encontrada con ese correo electrónico o cuenta de usuario ya está activa'
|
56
|
+
activate:
|
57
|
+
success: 'Activación exitosa, inicie sesión para continuar'
|
58
|
+
failure: 'La activación falló, solicita un nuevo token de activación'
|
59
|
+
unlocks:
|
60
|
+
create:
|
61
|
+
success: 'Recibirás instrucciones de desbloqueo de cuenta de usuario en tu buzón de correo electrónico.'
|
62
|
+
failure: 'Ninguna cuenta de usuario encontrada con ese correo electrónico o cuenta de usuario ya está desbloqueada'
|
63
|
+
unlock:
|
64
|
+
success: 'Desbloqueo exitoso, inicia sesión para continuar'
|
65
|
+
failure: 'Falló el desbloqueo, solicita un nuevo token de desbloqueo'
|
3
66
|
mailer:
|
4
67
|
activation_needed:
|
5
68
|
subject: 'Te has registrado correctamente'
|
@@ -63,4 +126,28 @@ es:
|
|
63
126
|
|
64
127
|
Para desbloquear tu cuenta ahora, solo sigue este enlace: %{url}. De todos modos se desbloqueará automáticamente en una hora.
|
65
128
|
|
66
|
-
¡Que tengas un gran día!
|
129
|
+
¡Que tengas un gran día!
|
130
|
+
|
131
|
+
api:
|
132
|
+
messages:
|
133
|
+
bad_request: 'Solicitud incorrecta'
|
134
|
+
unauthorized: 'No autorizado'
|
135
|
+
payment_required: 'Pago requerido'
|
136
|
+
forbidden: 'Prohibido'
|
137
|
+
not_found: 'No encontrado'
|
138
|
+
method_not_allowed: 'Método no permitido'
|
139
|
+
unprocessable_entity: 'Entidad no procesable'
|
140
|
+
simple_form:
|
141
|
+
'yes': 'Si'
|
142
|
+
'no': 'No'
|
143
|
+
required:
|
144
|
+
text: 'requerido'
|
145
|
+
mark: '*'
|
146
|
+
error_notification:
|
147
|
+
default_message: 'Por favor revise los problemas a continuación:'
|
148
|
+
labels:
|
149
|
+
defaults:
|
150
|
+
email: 'Correo electrónico'
|
151
|
+
password: 'Contraseña'
|
152
|
+
password_confirmation: 'Confirmar la contraseña'
|
153
|
+
remember_me: 'Recuérdame'
|
data/lib/morpho.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
module Morpho
|
2
|
+
module Cipher
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def jwt_encode(payload, algorithm = Morpho.config.jwt.algorithm)
|
6
|
+
JWT.encode(payload, Morpho.config.jwt.secret, algorithm)
|
7
|
+
end
|
8
|
+
|
9
|
+
def jwt_decode(token, algorithm = Morpho.config.jwt.algorithm)
|
10
|
+
JWT.decode(token, Morpho.config.jwt.secret, true, algorithm: algorithm)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/morpho/loader.rb
CHANGED
data/lib/morpho/version.rb
CHANGED
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.
|
4
|
+
version: 0.3.0
|
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-
|
11
|
+
date: 2018-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: 0.2.2
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rails-i18n
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '5.1'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '5.1'
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: sqlite3
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,6 +252,7 @@ files:
|
|
238
252
|
- app/api/concerns/morpho/grape/user_unlock.rb
|
239
253
|
- app/api/morpho/entities/authentication_token.rb
|
240
254
|
- app/api/morpho/entities/base.rb
|
255
|
+
- app/api/morpho/entities/error.rb
|
241
256
|
- app/api/morpho/entities/user.rb
|
242
257
|
- app/api/morpho/entities/user_sign_in.rb
|
243
258
|
- app/api/morpho/entities/user_sign_up.rb
|
@@ -268,7 +283,9 @@ files:
|
|
268
283
|
- app/views/layouts/morpho/application.html.erb
|
269
284
|
- app/views/layouts/morpho/mailer.html.erb
|
270
285
|
- app/views/layouts/morpho/mailer.text.erb
|
286
|
+
- app/views/morpho/activations/failure.html.erb
|
271
287
|
- app/views/morpho/activations/new.html.erb
|
288
|
+
- app/views/morpho/activations/success.html.erb
|
272
289
|
- app/views/morpho/home/index.html.erb
|
273
290
|
- app/views/morpho/passwords/edit.html.erb
|
274
291
|
- app/views/morpho/passwords/new.html.erb
|
@@ -303,6 +320,7 @@ files:
|
|
303
320
|
- lib/generators/morpho/install/templates/public/favicon-32x32.png
|
304
321
|
- lib/generators/morpho/install/templates/public/favicon.ico
|
305
322
|
- lib/morpho.rb
|
323
|
+
- lib/morpho/cipher.rb
|
306
324
|
- lib/morpho/configuration.rb
|
307
325
|
- lib/morpho/configurations/api.rb
|
308
326
|
- lib/morpho/configurations/auth.rb
|