From 83259aab5464681c3f972231f4dac7ed642a1443 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Fri, 26 Feb 2016 17:34:36 +0100 Subject: [PATCH] Controller users and user_sessions added --- app/assets/javascripts/user_sessions.coffee | 3 ++ app/assets/javascripts/users.coffee | 3 ++ app/assets/stylesheets/application.css | 0 app/assets/stylesheets/user_sessions.scss | 3 ++ app/assets/stylesheets/users.scss | 3 ++ app/controllers/user_sessions_controller.rb | 22 ++++++++++ app/controllers/users_controller.rb | 43 +++++++++++++++++++ app/helpers/user_sessions_helper.rb | 2 + app/helpers/users_helper.rb | 2 + app/models/user_session.rb | 7 +++ app/views/user_sessions/new.slim | 15 +++++++ app/views/users/_form.slim | 20 +++++++++ app/views/users/show.slim | 28 ++++++++++++ .../user_sessions_controller_test.rb | 7 +++ test/controllers/users_controller_test.rb | 7 +++ test/helpers/user_sessions_helper_test.rb | 7 +++ test/helpers/users_helper_test.rb | 7 +++ 17 files changed, 179 insertions(+) create mode 100644 app/assets/javascripts/user_sessions.coffee create mode 100644 app/assets/javascripts/users.coffee create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/assets/stylesheets/user_sessions.scss create mode 100644 app/assets/stylesheets/users.scss create mode 100644 app/controllers/user_sessions_controller.rb create mode 100644 app/controllers/users_controller.rb create mode 100644 app/helpers/user_sessions_helper.rb create mode 100644 app/helpers/users_helper.rb create mode 100644 app/models/user_session.rb create mode 100644 app/views/user_sessions/new.slim create mode 100644 app/views/users/_form.slim create mode 100644 app/views/users/show.slim create mode 100644 test/controllers/user_sessions_controller_test.rb create mode 100644 test/controllers/users_controller_test.rb create mode 100644 test/helpers/user_sessions_helper_test.rb create mode 100644 test/helpers/users_helper_test.rb diff --git a/app/assets/javascripts/user_sessions.coffee b/app/assets/javascripts/user_sessions.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/user_sessions.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/users.coffee b/app/assets/javascripts/users.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/users.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 0000000..e69de29 diff --git a/app/assets/stylesheets/user_sessions.scss b/app/assets/stylesheets/user_sessions.scss new file mode 100644 index 0000000..1d3eacb --- /dev/null +++ b/app/assets/stylesheets/user_sessions.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the user_sessions controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss new file mode 100644 index 0000000..1efc835 --- /dev/null +++ b/app/assets/stylesheets/users.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the users controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/user_sessions_controller.rb b/app/controllers/user_sessions_controller.rb new file mode 100644 index 0000000..831859e --- /dev/null +++ b/app/controllers/user_sessions_controller.rb @@ -0,0 +1,22 @@ +class UserSessionsController < ApplicationController + + def new + @user_session = UserSession.new + end + + def create + @user_session = UserSession.new(params[:user_session]) + if @user_session.save + flash[:notice] = "Login successful!" + redirect_back_or_default account_url(@current_user) + else + render :action => :new + end + end + + def destroy + current_user_session.destroy + flash[:notice] = "Logout successful!" + redirect_back_or_default new_user_session_url + end +end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 0000000..196391e --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,43 @@ +class UsersController < ApplicationController + + before_filter :require_user, :only => [:show, :edit, :update] + + def new + @user = User.new + end + + def create + @user = User.new(params[:user]) + + # Saving without session maintenance to skip + # auto-login which can't happen here because + # the User has not yet been activated + if @user.save + flash[:notice] = "Your account has been created." + redirect_to signup_url + else + flash[:notice] = "There was a problem creating you." + render :action => :new + end + + end + + def show + @user = current_user + end + + def edit + @user = current_user + end + + def update + @user = current_user # makes our views "cleaner" and more consistent + if @user.update_attributes(params[:user]) + flash[:notice] = "Account updated!" + redirect_to account_url + else + render :action => :edit + end + end + +end diff --git a/app/helpers/user_sessions_helper.rb b/app/helpers/user_sessions_helper.rb new file mode 100644 index 0000000..2018402 --- /dev/null +++ b/app/helpers/user_sessions_helper.rb @@ -0,0 +1,2 @@ +module UserSessionsHelper +end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb new file mode 100644 index 0000000..2310a24 --- /dev/null +++ b/app/helpers/users_helper.rb @@ -0,0 +1,2 @@ +module UsersHelper +end diff --git a/app/models/user_session.rb b/app/models/user_session.rb new file mode 100644 index 0000000..0e212cd --- /dev/null +++ b/app/models/user_session.rb @@ -0,0 +1,7 @@ +# User sessions. Refers to the "User" class automatically (by its name). +# See also: https://github.com/binarylogic/authlogic +class UserSession < Authlogic::Session::Base + # specify configuration here, such as: + # logout_on_timeout true + # ...many more options in the documentation +end diff --git a/app/views/user_sessions/new.slim b/app/views/user_sessions/new.slim new file mode 100644 index 0000000..2c42cfa --- /dev/null +++ b/app/views/user_sessions/new.slim @@ -0,0 +1,15 @@ +- raise @user_session +- form_for @user_session, :as => :user_session, :url => { :action => "create" } do |f| + = render "shared/error_messages", :target => @user_session + = f.label :email + br + = f.text_field :email + br + = f.label :password + br + = f.password_field :password + br + = f.check_box :remember_me + = f.label :remember_me + br + = f.submit "Login" diff --git a/app/views/users/_form.slim b/app/views/users/_form.slim new file mode 100644 index 0000000..e6161d2 --- /dev/null +++ b/app/views/users/_form.slim @@ -0,0 +1,20 @@ += render "shared/error_messages", :target => @user + +p + = form.label :name % + br + = form.text_field :name +p + = form.label :email + br + = form.text_field :email +p + = form.label :password, form.object.new_record? ? nil : "Change password" + br + = form.password_field :password +p + = form.label :password_confirmation + br + = form.password_field :password_confirmation + += link_to 'Edit Account', edit_account_path diff --git a/app/views/users/show.slim b/app/views/users/show.slim new file mode 100644 index 0000000..aae3998 --- /dev/null +++ b/app/views/users/show.slim @@ -0,0 +1,28 @@ +p + b Email: + =h @user.email + +p + b Login count: + + =h @user.login_count + +p + b Last request at: + =h @user.last_request_at + +p + b Last login at: + =h @user.last_login_at + +p + b Current login at: + =h @user.current_login_at + +p + b Last login ip: + =h @user.last_login_ip + +p + b Current login ip: + =h @user.current_login_ip diff --git a/test/controllers/user_sessions_controller_test.rb b/test/controllers/user_sessions_controller_test.rb new file mode 100644 index 0000000..2b8f395 --- /dev/null +++ b/test/controllers/user_sessions_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class UserSessionsControllerTest < ActionController::TestCase + def test_sanity + flunk "Need real tests" + end +end diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb new file mode 100644 index 0000000..96ac2b7 --- /dev/null +++ b/test/controllers/users_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class UsersControllerTest < ActionController::TestCase + def test_sanity + flunk "Need real tests" + end +end diff --git a/test/helpers/user_sessions_helper_test.rb b/test/helpers/user_sessions_helper_test.rb new file mode 100644 index 0000000..e8030ab --- /dev/null +++ b/test/helpers/user_sessions_helper_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class UserSessionsHelperTest < ActionView::TestCase + def test_sanity + flunk "Need real tests" + end +end diff --git a/test/helpers/users_helper_test.rb b/test/helpers/users_helper_test.rb new file mode 100644 index 0000000..d940efc --- /dev/null +++ b/test/helpers/users_helper_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class UsersHelperTest < ActionView::TestCase + def test_sanity + flunk "Need real tests" + end +end