diff options
| -rw-r--r-- | users/app/assets/javascripts/users.js.coffee | 8 | ||||
| -rw-r--r-- | users/app/controllers/sessions_controller.rb | 1 | ||||
| -rw-r--r-- | users/app/models/session.rb | 34 | ||||
| -rw-r--r-- | users/app/views/sessions/new.html.haml | 2 | 
4 files changed, 43 insertions, 2 deletions
diff --git a/users/app/assets/javascripts/users.js.coffee b/users/app/assets/javascripts/users.js.coffee index 75440ea..6d1dda2 100644 --- a/users/app/assets/javascripts/users.js.coffee +++ b/users/app/assets/javascripts/users.js.coffee @@ -36,7 +36,13 @@ srp.loggedIn = ->    window.location = '/'  srp.error = (message) -> -  alert(message) +  if $.isPlainObject(message) && message.errors +    for key, value of message.errors +      element = $('form input[name="session['+key+']"]') +      next unless element +      element.trigger('element:validate:fail.ClientSideValidations', value).data('valid', false) +  else +    alert(message)  $(document).ready ->    $('#new_user').submit preventDefault diff --git a/users/app/controllers/sessions_controller.rb b/users/app/controllers/sessions_controller.rb index 66c1c4f..32d1ddc 100644 --- a/users/app/controllers/sessions_controller.rb +++ b/users/app/controllers/sessions_controller.rb @@ -3,6 +3,7 @@ class SessionsController < ApplicationController    skip_before_filter :verify_authenticity_token    def new +    @session = Session.new      if @errors = authentication_error        render :status => 422      end diff --git a/users/app/models/session.rb b/users/app/models/session.rb new file mode 100644 index 0000000..a9fdb1b --- /dev/null +++ b/users/app/models/session.rb @@ -0,0 +1,34 @@ +class Session < SRP::Session +  include ActiveModel::Validations + +  attr_accessor :login + +  validates :login, +    :presence => true, +    :format => { :with => /\A[A-Za-z\d_]+\z/, +      :message => "Only letters, digits and _ allowed" } + +  def initialize(user = nil, aa = nil) +    super(user, aa) if user +  end + +  def persisted? +    false +  end + +  def new_record? +    true +  end + +  def to_model +    self +  end + +  def to_key +    [object_id] +  end + +  def to_param +    nil +  end +end diff --git a/users/app/views/sessions/new.html.haml b/users/app/views/sessions/new.html.haml index c91d3f2..a04f584 100644 --- a/users/app/views/sessions/new.html.haml +++ b/users/app/views/sessions/new.html.haml @@ -1,6 +1,6 @@  .span8.offset2    %h2=t :login -  = simple_form_for :session, :url => sessions_path, :html => { :id => :new_session, :class => 'form-horizontal' } do |f| +  = simple_form_for @session, :validate => true, :html => { :id => :new_session, :class => 'form-horizontal' } do |f|      %legend=t :login_message      = f.input :login, :input_html => { :id => :srp_username }      = f.input :password, :required => true, :input_html => { :id => :srp_password }  | 
