diff options
Diffstat (limited to 'users/app')
| m--------- | users/app/assets/javascripts/srp | 0 | ||||
| -rw-r--r-- | users/app/assets/javascripts/users.js.coffee | 26 | ||||
| -rw-r--r-- | users/app/controllers/controller_extension/authentication.rb | 8 | ||||
| -rw-r--r-- | users/app/controllers/sessions_controller.rb | 6 | ||||
| -rw-r--r-- | users/app/models/session.rb | 34 | ||||
| -rw-r--r-- | users/app/models/user.rb | 2 | ||||
| -rw-r--r-- | users/app/views/sessions/new.html.haml | 2 | 
7 files changed, 63 insertions, 15 deletions
diff --git a/users/app/assets/javascripts/srp b/users/app/assets/javascripts/srp -Subproject efac662cdf31bc4b61ffb97b8c398e22a86c364 +Subproject 076d6e251e4caf826787d87b11434e535960455 diff --git a/users/app/assets/javascripts/users.js.coffee b/users/app/assets/javascripts/users.js.coffee index ab437f6..d0ec32f 100644 --- a/users/app/assets/javascripts/users.js.coffee +++ b/users/app/assets/javascripts/users.js.coffee @@ -27,21 +27,27 @@ validOrAbort = (event) ->    abortIfErrors() -signup = (event) -> -  srp = new SRP(jqueryRest()) -  srp.register -> -    window.location = '/' -login = (event) -> -  srp = new SRP(jqueryRest()) -  srp.identify -> -    window.location = '/' +srp.session = new srp.Session() +srp.signedUp = -> +  window.location = '/' +srp.loggedIn = -> +  window.location = '/' + +srp.error = (message) -> +  if $.isPlainObject(message) && message.errors +    for field, error of message.errors +      element = $('form input[name="session['+field+']"]') +      next unless element +      element.trigger('element:validate:fail.ClientSideValidations', error).data('valid', false) +  else +    alert(message)  $(document).ready ->    $('#new_user').submit preventDefault    $('#new_user').submit validOrAbort -  $('#new_user').submit signup +  $('#new_user').submit srp.signup    $('#new_session').submit preventDefault -  $('#new_session').submit login +  $('#new_session').submit srp.login diff --git a/users/app/controllers/controller_extension/authentication.rb b/users/app/controllers/controller_extension/authentication.rb index 87f7921..6ac7a5b 100644 --- a/users/app/controllers/controller_extension/authentication.rb +++ b/users/app/controllers/controller_extension/authentication.rb @@ -7,8 +7,12 @@ module ControllerExtension::Authentication      helper_method :current_user, :logged_in?, :admin?    end -  def authentication_error -    warden.winning_strategy.try(:message) +  def authentication_errors +    return unless errors = warden.winning_strategy.try(:message) +    errors.inject({}) do |translated,err| +      translated[err.first] = I18n.t(err.last) +      translated +    end    end    def logged_in? diff --git a/users/app/controllers/sessions_controller.rb b/users/app/controllers/sessions_controller.rb index 486f67e..bc910b5 100644 --- a/users/app/controllers/sessions_controller.rb +++ b/users/app/controllers/sessions_controller.rb @@ -3,7 +3,11 @@ class SessionsController < ApplicationController    skip_before_filter :verify_authenticity_token    def new -    @errors = authentication_error +    @session = Session.new +    if authentication_errors +      @errors = authentication_errors +      render :status => 422 +    end    end    def create 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/models/user.rb b/users/app/models/user.rb index 824c439..507eda5 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -36,7 +36,7 @@ class User < CouchRest::Model::Base      # valid set of attributes for testing      def valid_attributes_hash        { :login => "me", -        :password_verifier => "1234ABC", +        :password_verifier => "1234ABCD",          :password_salt => "4321AB" }      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 }  | 
