Commit 8ae5ab7b
Changed files (10)
app
assets
javascripts
models
views
sessions
controllers
views
sessions
config
locales
spec
controllers
features
javascripts
models
views
sessions
support
pages
app/assets/javascripts/models/session.js.coffee
@@ -2,16 +2,16 @@ class CakeSide.Models.Session extends Backbone.Model
EMAIL_REGEX=/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/
modelKey: 'session'
defaults:
- username: null
+ email: null
password: null
- requiredFields: ['username', 'password']
+ requiredFields: ['email', 'password']
validate: (attributes, options) ->
errors = {}
- if !EMAIL_REGEX.test(attributes.username)
- errors['username'] = @errorFor('username', 'invalid')
+ if !EMAIL_REGEX.test(attributes.email)
+ errors['email'] = @errorFor('email', 'invalid')
_.each @requiredFields, (field) =>
if _.isEmpty(attributes[field])
app/assets/javascripts/views/sessions/login_form.js.coffee
@@ -15,7 +15,7 @@ class CakeSide.Views.LoginForm extends CakeSide.AutoView
@renderErrors(@model.validationError)
onInput: (event) ->
- @model.set('username', @field('username').val())
+ @model.set('email', @field('email').val())
@model.set('password', @field('password').val())
@$('input[type=submit]').prop('disabled', !@model.isValid())
@render()
app/controllers/sessions_controller.rb
@@ -5,7 +5,7 @@ class SessionsController < ApplicationController
end
def create
- if @session = User.login(session_params[:username], session_params[:password])
+ if @session = User.login(session_params[:email], session_params[:password])
reset_session
session[:raphael] = @session.access(request)
redirect_to my_dashboard_path
@@ -24,6 +24,6 @@ class SessionsController < ApplicationController
private
def session_params
- params.require(:session).permit(:username, :password)
+ params.require(:session).permit(:email, :password)
end
end
app/views/sessions/new.html.erb
@@ -28,7 +28,7 @@
<%= form_for(@session, url: sessions_path(@session), html: { class: "form-horizontal needs-validation", novalidate: :novalidate }) do |f| %>
<legend>Got an account? Login!</legend>
<div class="form-group">
- <%= email_field_tag 'session[username]', '', placeholder: 'Email', class: "form-control", required: :required %>
+ <%= email_field_tag 'session[email]', '', placeholder: 'Email', class: "form-control", required: :required %>
<div class="invalid-feedback"></div>
</div>
<div class="form-group">
config/locales/en.yml
@@ -23,5 +23,5 @@ en:
activerecord:
attributes:
session:
- username: 'Email'
+ email: 'Email'
password: 'Password'
spec/controllers/sessions_controller_spec.rb
@@ -23,14 +23,14 @@ describe SessionsController do
end
describe "#create" do
- context "when the username and password is correct" do
+ context "when the email and password is correct" do
let(:user_session) { build(:user_session, id: SecureRandom.uuid) }
- let(:username) { "joe" }
+ let(:email) { "joe" }
let(:password) { "password" }
before :each do
- allow(User).to receive(:login).with(username, password).and_return(user_session)
- post :create, session: { username: username, password: password }
+ allow(User).to receive(:login).with(email, password).and_return(user_session)
+ post :create, session: { email: email, password: password }
end
it "returns a valid session" do
@@ -42,13 +42,13 @@ describe SessionsController do
end
end
- context "when the username is not known" do
+ context "when the email is not known" do
before :each do
allow(User).to receive(:login).and_return(nil)
end
it "returns an error" do
- post :create, session: { username: 'x', password: 'y' }
+ post :create, session: { email: 'x', password: 'y' }
expect(response).to redirect_to(login_path)
expect(flash[:error]).to_not be_empty
end
spec/features/upload_creation_spec.rb
@@ -8,7 +8,7 @@ describe "uploading a new creation", :js => true do
before :each do
visit login_path
within('.form-inline') do
- fill_in('session_username', with: user.email)
+ fill_in('session_email', with: user.email)
fill_in('session_password', with: "password")
end
click_button("Sign In")
spec/javascripts/models/session_spec.js.coffee
@@ -8,14 +8,14 @@ describe "CakeSide.Models.Session", ->
expectedError = "Email can't be blank"
expect(subject.isValid()).toEqual(false)
- expect(subject.validationError['username']).toEqual(expectedError)
+ expect(subject.validationError['email']).toEqual(expectedError)
it "is invalid, when the email is not a valid email addrees", ->
- subject.set('username', 'blah')
+ subject.set('email', 'blah')
expectedError = "Email is invalid"
expect(subject.isValid()).toEqual(false)
- expect(subject.validationError['username']).toEqual(expectedError)
+ expect(subject.validationError['email']).toEqual(expectedError)
it "is invalid, when the password is missing", ->
expectedError = "Password can't be blank"
@@ -24,7 +24,7 @@ describe "CakeSide.Models.Session", ->
expect(subject.validationError['password']).toEqual(expectedError)
it "is valid", ->
- subject.set('username', 'test@example.com')
+ subject.set('email', 'test@example.com')
subject.set('password', 'password')
expect(subject.isValid()).toEqual(true)
expect(subject.validationError).toEqual(null)
spec/javascripts/views/sessions/login_form_spec.js.coffee
@@ -8,7 +8,7 @@ describe "CakeSide.Views.LoginForm", ->
<input name="utf8" type="hidden" value="✓">
<input type="hidden" name="authenticity_token" value="NUk9vz3sVMzi09PgQrzOTDcJIki2RgCzHgtpFw0ooSha4lgMt/bUsuAk//Wvi7wb/K6qh+pVrDkKr5a5e66QTw==">
<div class="form-group">
- <input type="email" name="session[username]" id="session_username" value="" placeholder="Email" class="form-control" required="required">
+ <input type="email" name="session[email]" id="session_email" value="" placeholder="Email" class="form-control" required="required">
<div class="invalid-feedback"></div>
</div>
<div class="form-group">
@@ -28,19 +28,19 @@ describe "CakeSide.Views.LoginForm", ->
subject.$('form').submit()
expect(subject.$('input[type=submit]').prop('disabled')).toEqual(true)
- expect(subject.field('username').siblings('.invalid-feedback').html()).toEqual("Email can't be blank")
+ expect(subject.field('email').siblings('.invalid-feedback').html()).toEqual("Email can't be blank")
it "disables the submit button when the password is missing", ->
- subject.field('username').val('user@email.com')
+ subject.field('email').val('user@email.com')
subject.$('form').submit()
expect(subject.$('input[type=submit]').prop('disabled')).toEqual(true)
expect(subject.field("password").siblings('.invalid-feedback').html()).toEqual("Password can't be blank")
it "enables the submit button when all required fields are specified", ->
- subject.field('username').val('user@email.com').change()
+ subject.field('email').val('user@email.com').change()
subject.field('password').val('password').change()
expect(subject.$('input[type=submit]').prop('disabled')).toEqual(false)
- expect(subject.field('username').siblings('.invalid-feedback').html()).toEqual('')
+ expect(subject.field('email').siblings('.invalid-feedback').html()).toEqual('')
expect(subject.field('password').siblings('.invalid-feedback').html()).toEqual('')
spec/support/pages/login_page.rb
@@ -7,7 +7,7 @@ class LoginPage < WebPage
def login_with(email:, password: "password")
within("#new_user_session") do
- fill_in("session_username", with: email)
+ fill_in("session_email", with: email)
fill_in("session_password", with: password)
end
click_button(I18n.t('sessions.new.sign_in'))