rails_simple_auth 1.0.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 +32 -0
- data/MIT-LICENSE +21 -0
- data/README.md +276 -0
- data/app/controllers/rails_simple_auth/base_controller.rb +16 -0
- data/app/controllers/rails_simple_auth/confirmations_controller.rb +45 -0
- data/app/controllers/rails_simple_auth/omniauth_callbacks_controller.rb +32 -0
- data/app/controllers/rails_simple_auth/passwords_controller.rb +66 -0
- data/app/controllers/rails_simple_auth/registrations_controller.rb +52 -0
- data/app/controllers/rails_simple_auth/sessions_controller.rb +90 -0
- data/app/mailers/rails_simple_auth/auth_mailer.rb +46 -0
- data/app/views/rails_simple_auth/confirmations/new.html.erb +27 -0
- data/app/views/rails_simple_auth/mailers/confirmation.html.erb +28 -0
- data/app/views/rails_simple_auth/mailers/magic_link.html.erb +28 -0
- data/app/views/rails_simple_auth/mailers/password_reset.html.erb +28 -0
- data/app/views/rails_simple_auth/passwords/edit.html.erb +33 -0
- data/app/views/rails_simple_auth/passwords/new.html.erb +27 -0
- data/app/views/rails_simple_auth/registrations/new.html.erb +55 -0
- data/app/views/rails_simple_auth/sessions/magic_link_form.html.erb +27 -0
- data/app/views/rails_simple_auth/sessions/new.html.erb +59 -0
- data/lib/generators/rails_simple_auth/css/css_generator.rb +36 -0
- data/lib/generators/rails_simple_auth/css/templates/rails_simple_auth.css +344 -0
- data/lib/generators/rails_simple_auth/install/install_generator.rb +65 -0
- data/lib/generators/rails_simple_auth/install/templates/initializer.rb +106 -0
- data/lib/generators/rails_simple_auth/install/templates/migration.rb +42 -0
- data/lib/generators/rails_simple_auth/views/views_generator.rb +39 -0
- data/lib/rails_simple_auth/configuration.rb +96 -0
- data/lib/rails_simple_auth/controllers/concerns/authentication.rb +104 -0
- data/lib/rails_simple_auth/controllers/concerns/session_management.rb +74 -0
- data/lib/rails_simple_auth/engine.rb +18 -0
- data/lib/rails_simple_auth/models/concerns/authenticatable.rb +65 -0
- data/lib/rails_simple_auth/models/concerns/confirmable.rb +42 -0
- data/lib/rails_simple_auth/models/concerns/magic_linkable.rb +21 -0
- data/lib/rails_simple_auth/models/concerns/oauth_connectable.rb +101 -0
- data/lib/rails_simple_auth/models/current.rb +7 -0
- data/lib/rails_simple_auth/models/session.rb +22 -0
- data/lib/rails_simple_auth/routes.rb +46 -0
- data/lib/rails_simple_auth/version.rb +5 -0
- data/lib/rails_simple_auth.rb +39 -0
- metadata +117 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<main class="rsa-container">
|
|
2
|
+
<div class="rsa-auth-form">
|
|
3
|
+
<h1 class="rsa-auth-form__title">Resend Confirmation</h1>
|
|
4
|
+
|
|
5
|
+
<p class="rsa-auth-form__description">
|
|
6
|
+
Enter your email and we'll send you a new confirmation link.
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<%= form_with url: main_app.confirmations_path, class: "rsa-auth-form__form" do |form| %>
|
|
10
|
+
<div class="rsa-auth-form__group">
|
|
11
|
+
<%= form.label :email_address, "Email", class: "rsa-auth-form__label" %>
|
|
12
|
+
<%= form.email_field :email_address,
|
|
13
|
+
class: "rsa-auth-form__input",
|
|
14
|
+
required: true,
|
|
15
|
+
autofocus: true %>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="rsa-auth-form__actions">
|
|
19
|
+
<%= form.submit "Resend Confirmation", class: "rsa-auth-form__submit" %>
|
|
20
|
+
</div>
|
|
21
|
+
<% end %>
|
|
22
|
+
|
|
23
|
+
<div class="rsa-auth-form__links">
|
|
24
|
+
<%= link_to "Back to Sign In", main_app.new_session_path, class: "rsa-auth-form__link" %>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</main>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
</head>
|
|
7
|
+
<body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; line-height: 1.5; color: #374151; max-width: 600px; margin: 0 auto; padding: 20px;">
|
|
8
|
+
<h1 style="font-size: 24px; margin-bottom: 16px;">Confirm Your Email</h1>
|
|
9
|
+
|
|
10
|
+
<p style="margin-bottom: 16px;">
|
|
11
|
+
Thanks for signing up! Please confirm your email address by clicking the link below:
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p style="margin-bottom: 24px;">
|
|
15
|
+
<a href="<%= @confirmation_url %>" style="display: inline-block; background-color: #3b82f6; color: #ffffff; padding: 12px 24px; text-decoration: none; border-radius: 6px; font-weight: 500;">
|
|
16
|
+
Confirm Email
|
|
17
|
+
</a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p style="margin-bottom: 16px; color: #6b7280; font-size: 14px;">
|
|
21
|
+
This link will expire in 24 hours.
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
<p style="margin-bottom: 16px; color: #6b7280; font-size: 14px;">
|
|
25
|
+
If you didn't create an account, you can safely ignore this email.
|
|
26
|
+
</p>
|
|
27
|
+
</body>
|
|
28
|
+
</html>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
</head>
|
|
7
|
+
<body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; line-height: 1.5; color: #374151; max-width: 600px; margin: 0 auto; padding: 20px;">
|
|
8
|
+
<h1 style="font-size: 24px; margin-bottom: 16px;">Sign In to Your Account</h1>
|
|
9
|
+
|
|
10
|
+
<p style="margin-bottom: 16px;">
|
|
11
|
+
Click the link below to sign in to your account:
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p style="margin-bottom: 24px;">
|
|
15
|
+
<a href="<%= @magic_link_url %>" style="display: inline-block; background-color: #3b82f6; color: #ffffff; padding: 12px 24px; text-decoration: none; border-radius: 6px; font-weight: 500;">
|
|
16
|
+
Sign In
|
|
17
|
+
</a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p style="margin-bottom: 16px; color: #6b7280; font-size: 14px;">
|
|
21
|
+
This link will expire in 15 minutes.
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
<p style="margin-bottom: 16px; color: #6b7280; font-size: 14px;">
|
|
25
|
+
If you didn't request this link, you can safely ignore this email.
|
|
26
|
+
</p>
|
|
27
|
+
</body>
|
|
28
|
+
</html>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
</head>
|
|
7
|
+
<body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; line-height: 1.5; color: #374151; max-width: 600px; margin: 0 auto; padding: 20px;">
|
|
8
|
+
<h1 style="font-size: 24px; margin-bottom: 16px;">Reset Your Password</h1>
|
|
9
|
+
|
|
10
|
+
<p style="margin-bottom: 16px;">
|
|
11
|
+
We received a request to reset your password. Click the link below to set a new password:
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p style="margin-bottom: 24px;">
|
|
15
|
+
<a href="<%= @password_reset_url %>" style="display: inline-block; background-color: #3b82f6; color: #ffffff; padding: 12px 24px; text-decoration: none; border-radius: 6px; font-weight: 500;">
|
|
16
|
+
Reset Password
|
|
17
|
+
</a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p style="margin-bottom: 16px; color: #6b7280; font-size: 14px;">
|
|
21
|
+
This link will expire in 15 minutes.
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
<p style="margin-bottom: 16px; color: #6b7280; font-size: 14px;">
|
|
25
|
+
If you didn't request a password reset, you can safely ignore this email.
|
|
26
|
+
</p>
|
|
27
|
+
</body>
|
|
28
|
+
</html>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<main class="rsa-container">
|
|
2
|
+
<div class="rsa-auth-form">
|
|
3
|
+
<h1 class="rsa-auth-form__title">Set New Password</h1>
|
|
4
|
+
|
|
5
|
+
<%= form_with model: @user, url: main_app.password_path(token: params[:token]), method: :patch, class: "rsa-auth-form__form" do |form| %>
|
|
6
|
+
<div class="rsa-auth-form__group">
|
|
7
|
+
<%= form.label :password, "New Password", class: "rsa-auth-form__label" %>
|
|
8
|
+
<%= form.password_field :password,
|
|
9
|
+
class: "rsa-auth-form__input #{@user.errors[:password].any? ? 'rsa-auth-form__input--error' : ''}",
|
|
10
|
+
required: true,
|
|
11
|
+
autofocus: true %>
|
|
12
|
+
<p class="rsa-auth-form__hint">Minimum <%= RailsSimpleAuth.configuration.password_minimum_length %> characters</p>
|
|
13
|
+
<% if @user.errors[:password].any? %>
|
|
14
|
+
<p class="rsa-auth-form__error"><%= @user.errors[:password].first %></p>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="rsa-auth-form__group">
|
|
19
|
+
<%= form.label :password_confirmation, "Confirm Password", class: "rsa-auth-form__label" %>
|
|
20
|
+
<%= form.password_field :password_confirmation,
|
|
21
|
+
class: "rsa-auth-form__input #{@user.errors[:password_confirmation].any? ? 'rsa-auth-form__input--error' : ''}",
|
|
22
|
+
required: true %>
|
|
23
|
+
<% if @user.errors[:password_confirmation].any? %>
|
|
24
|
+
<p class="rsa-auth-form__error"><%= @user.errors[:password_confirmation].first %></p>
|
|
25
|
+
<% end %>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div class="rsa-auth-form__actions">
|
|
29
|
+
<%= form.submit "Update Password", class: "rsa-auth-form__submit" %>
|
|
30
|
+
</div>
|
|
31
|
+
<% end %>
|
|
32
|
+
</div>
|
|
33
|
+
</main>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<main class="rsa-container">
|
|
2
|
+
<div class="rsa-auth-form">
|
|
3
|
+
<h1 class="rsa-auth-form__title">Reset Password</h1>
|
|
4
|
+
|
|
5
|
+
<p class="rsa-auth-form__description">
|
|
6
|
+
Enter your email and we'll send you instructions to reset your password.
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<%= form_with url: main_app.passwords_path, class: "rsa-auth-form__form" do |form| %>
|
|
10
|
+
<div class="rsa-auth-form__group">
|
|
11
|
+
<%= form.label :email_address, "Email", class: "rsa-auth-form__label" %>
|
|
12
|
+
<%= form.email_field :email_address,
|
|
13
|
+
class: "rsa-auth-form__input",
|
|
14
|
+
required: true,
|
|
15
|
+
autofocus: true %>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="rsa-auth-form__actions">
|
|
19
|
+
<%= form.submit "Send Reset Instructions", class: "rsa-auth-form__submit" %>
|
|
20
|
+
</div>
|
|
21
|
+
<% end %>
|
|
22
|
+
|
|
23
|
+
<div class="rsa-auth-form__links">
|
|
24
|
+
<%= link_to "Back to Sign In", main_app.new_session_path, class: "rsa-auth-form__link" %>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</main>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<main class="rsa-container">
|
|
2
|
+
<div class="rsa-auth-form">
|
|
3
|
+
<h1 class="rsa-auth-form__title">Sign Up</h1>
|
|
4
|
+
|
|
5
|
+
<%= form_with model: @user, url: main_app.sign_up_path, class: "rsa-auth-form__form" do |form| %>
|
|
6
|
+
<div class="rsa-auth-form__group">
|
|
7
|
+
<%= form.label :email_address, "Email", class: "rsa-auth-form__label" %>
|
|
8
|
+
<%= form.email_field :email_address,
|
|
9
|
+
class: "rsa-auth-form__input #{@user.errors[:email_address].any? ? 'rsa-auth-form__input--error' : ''}",
|
|
10
|
+
required: true,
|
|
11
|
+
autofocus: true %>
|
|
12
|
+
<% if @user.errors[:email_address].any? %>
|
|
13
|
+
<p class="rsa-auth-form__error"><%= @user.errors[:email_address].first %></p>
|
|
14
|
+
<% end %>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<div class="rsa-auth-form__group">
|
|
18
|
+
<%= form.label :password, class: "rsa-auth-form__label" %>
|
|
19
|
+
<%= form.password_field :password,
|
|
20
|
+
class: "rsa-auth-form__input #{@user.errors[:password].any? ? 'rsa-auth-form__input--error' : ''}",
|
|
21
|
+
required: true %>
|
|
22
|
+
<p class="rsa-auth-form__hint">Minimum <%= RailsSimpleAuth.configuration.password_minimum_length %> characters</p>
|
|
23
|
+
<% if @user.errors[:password].any? %>
|
|
24
|
+
<p class="rsa-auth-form__error"><%= @user.errors[:password].first %></p>
|
|
25
|
+
<% end %>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div class="rsa-auth-form__actions">
|
|
29
|
+
<%= form.submit "Sign Up", class: "rsa-auth-form__submit" %>
|
|
30
|
+
</div>
|
|
31
|
+
<% end %>
|
|
32
|
+
|
|
33
|
+
<% if RailsSimpleAuth.configuration.oauth_enabled %>
|
|
34
|
+
<div class="rsa-auth-form__separator">or</div>
|
|
35
|
+
|
|
36
|
+
<div class="rsa-auth-form__oauth">
|
|
37
|
+
<div class="rsa-auth-form__oauth-buttons">
|
|
38
|
+
<% RailsSimpleAuth.configuration.oauth_providers.each do |provider| %>
|
|
39
|
+
<%= link_to "/auth/#{provider}",
|
|
40
|
+
class: "rsa-auth-form__oauth-button rsa-auth-form__oauth-button--#{provider}",
|
|
41
|
+
method: :post,
|
|
42
|
+
data: { turbo: false } do %>
|
|
43
|
+
<span class="rsa-auth-form__oauth-icon rsa-auth-form__oauth-icon--<%= provider %>"></span>
|
|
44
|
+
Continue with <%= provider.to_s.titleize %>
|
|
45
|
+
<% end %>
|
|
46
|
+
<% end %>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
<% end %>
|
|
50
|
+
|
|
51
|
+
<div class="rsa-auth-form__links">
|
|
52
|
+
<%= link_to "Already have an account? Sign In", main_app.new_session_path, class: "rsa-auth-form__link" %>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</main>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<main class="rsa-container">
|
|
2
|
+
<div class="rsa-auth-form">
|
|
3
|
+
<h1 class="rsa-auth-form__title">Sign In with Magic Link</h1>
|
|
4
|
+
|
|
5
|
+
<p class="rsa-auth-form__description">
|
|
6
|
+
Enter your email and we'll send you a link to sign in instantly.
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<%= form_with url: main_app.request_magic_link_path, class: "rsa-auth-form__form" do |form| %>
|
|
10
|
+
<div class="rsa-auth-form__group">
|
|
11
|
+
<%= form.label :email_address, "Email", class: "rsa-auth-form__label" %>
|
|
12
|
+
<%= form.email_field :email_address,
|
|
13
|
+
class: "rsa-auth-form__input",
|
|
14
|
+
required: true,
|
|
15
|
+
autofocus: true %>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="rsa-auth-form__actions">
|
|
19
|
+
<%= form.submit "Send Magic Link", class: "rsa-auth-form__submit" %>
|
|
20
|
+
</div>
|
|
21
|
+
<% end %>
|
|
22
|
+
|
|
23
|
+
<div class="rsa-auth-form__links">
|
|
24
|
+
<%= link_to "Sign in with password", main_app.new_session_path, class: "rsa-auth-form__link" %>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</main>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<main class="rsa-container">
|
|
2
|
+
<div class="rsa-auth-form">
|
|
3
|
+
<h1 class="rsa-auth-form__title">Sign In</h1>
|
|
4
|
+
|
|
5
|
+
<%= form_with url: main_app.session_path, class: "rsa-auth-form__form" do |form| %>
|
|
6
|
+
<div class="rsa-auth-form__group">
|
|
7
|
+
<%= form.label :email_address, "Email", class: "rsa-auth-form__label" %>
|
|
8
|
+
<%= form.email_field :email_address,
|
|
9
|
+
class: "rsa-auth-form__input #{@error_message.present? ? 'rsa-auth-form__input--error' : ''}",
|
|
10
|
+
required: true,
|
|
11
|
+
autofocus: true,
|
|
12
|
+
value: @previous_email %>
|
|
13
|
+
<% if @error_message.present? %>
|
|
14
|
+
<p class="rsa-auth-form__error"><%= @error_message %></p>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="rsa-auth-form__group">
|
|
19
|
+
<%= form.label :password, class: "rsa-auth-form__label" %>
|
|
20
|
+
<%= form.password_field :password,
|
|
21
|
+
class: "rsa-auth-form__input #{@error_message.present? ? 'rsa-auth-form__input--error' : ''}",
|
|
22
|
+
required: true %>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<div class="rsa-auth-form__actions">
|
|
26
|
+
<%= form.submit "Sign In", class: "rsa-auth-form__submit" %>
|
|
27
|
+
</div>
|
|
28
|
+
<% end %>
|
|
29
|
+
|
|
30
|
+
<% if RailsSimpleAuth.configuration.magic_link_enabled %>
|
|
31
|
+
<div class="rsa-auth-form__separator">or</div>
|
|
32
|
+
|
|
33
|
+
<%= link_to main_app.magic_link_form_path, class: "rsa-auth-form__magic-link-button" do %>
|
|
34
|
+
Sign in with Magic Link
|
|
35
|
+
<% end %>
|
|
36
|
+
<% end %>
|
|
37
|
+
|
|
38
|
+
<% if RailsSimpleAuth.configuration.oauth_enabled %>
|
|
39
|
+
<div class="rsa-auth-form__oauth">
|
|
40
|
+
<div class="rsa-auth-form__oauth-buttons">
|
|
41
|
+
<% RailsSimpleAuth.configuration.oauth_providers.each do |provider| %>
|
|
42
|
+
<%= link_to "/auth/#{provider}",
|
|
43
|
+
class: "rsa-auth-form__oauth-button rsa-auth-form__oauth-button--#{provider}",
|
|
44
|
+
method: :post,
|
|
45
|
+
data: { turbo: false } do %>
|
|
46
|
+
<span class="rsa-auth-form__oauth-icon rsa-auth-form__oauth-icon--<%= provider %>"></span>
|
|
47
|
+
Continue with <%= provider.to_s.titleize %>
|
|
48
|
+
<% end %>
|
|
49
|
+
<% end %>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
<% end %>
|
|
53
|
+
|
|
54
|
+
<div class="rsa-auth-form__links">
|
|
55
|
+
<%= link_to "Forgot password?", main_app.new_password_path, class: "rsa-auth-form__link" %>
|
|
56
|
+
<%= link_to "Sign Up", main_app.sign_up_path, class: "rsa-auth-form__link rsa-auth-form__link--right" %>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</main>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
|
|
5
|
+
module RailsSimpleAuth
|
|
6
|
+
module Generators
|
|
7
|
+
class CssGenerator < Rails::Generators::Base
|
|
8
|
+
source_root File.expand_path("templates", __dir__)
|
|
9
|
+
|
|
10
|
+
class_option :path, type: :string, default: "app/assets/stylesheets",
|
|
11
|
+
desc: "Path to copy CSS to"
|
|
12
|
+
|
|
13
|
+
def copy_css
|
|
14
|
+
template "rails_simple_auth.css", "#{options[:path]}/rails_simple_auth.css"
|
|
15
|
+
|
|
16
|
+
say ""
|
|
17
|
+
say "CSS copied to #{options[:path]}/rails_simple_auth.css", :green
|
|
18
|
+
say ""
|
|
19
|
+
say "To use this CSS:"
|
|
20
|
+
say ""
|
|
21
|
+
say " 1. Include in your application.css or layout:"
|
|
22
|
+
say " <%= stylesheet_link_tag 'rails_simple_auth' %>"
|
|
23
|
+
say ""
|
|
24
|
+
say " 2. Customize by overriding CSS variables in your own stylesheet:"
|
|
25
|
+
say ""
|
|
26
|
+
say " :root {"
|
|
27
|
+
say " --rsa-color-primary: #your-brand-color;"
|
|
28
|
+
say " --rsa-color-background-form: #your-form-bg;"
|
|
29
|
+
say " }"
|
|
30
|
+
say ""
|
|
31
|
+
say " 3. Or edit rails_simple_auth.css directly."
|
|
32
|
+
say ""
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|