1
0
mirror of https://github.com/danbee/danbarberphoto synced 2025-03-04 08:49:07 +00:00

Add monban for admin authentication

This commit is contained in:
Daniel Barber 2015-10-26 12:05:47 +00:00
parent ef0d0bce0f
commit 2995460e97
16 changed files with 176 additions and 11 deletions

View File

@ -0,0 +1,4 @@
.sign_out {
position: absolute;
bottom: 1.5em;
}

View File

@ -5,11 +5,9 @@
# If you want to add pagination or other controller-level concerns,
# you're free to overwrite the RESTful controller actions.
class Admin::ApplicationController < Administrate::ApplicationController
before_filter :authenticate_admin
include Monban::ControllerHelpers
def authenticate_admin
# TODO Add authentication logic here.
end
before_filter :require_login
# Override this value to specify the number of elements to display at a time
# on index pages. Defaults to 20.

View File

@ -1,4 +1,5 @@
class ApplicationController < ActionController::Base
include Monban::ControllerHelpers
protect_from_forgery
rescue_from ActiveRecord::RecordNotFound, with: :render_404

View File

@ -0,0 +1,29 @@
class SessionsController < ApplicationController
layout 'administrate/login'
skip_before_action :require_login, only: [:new, :create]
def new
end
def create
user = authenticate_session(session_params)
if sign_in(user)
redirect_to admin_root_path
else
render :new
end
end
def destroy
sign_out
redirect_to root_path
end
private
def session_params
params.require(:session).permit(:email, :password)
end
end

View File

@ -0,0 +1,25 @@
class UsersController < ApplicationController
skip_before_action :require_login, only: [:new, :create]
def new
@user = User.new
end
def create
@user = sign_up(user_params)
if @user.valid?
sign_in(@user)
redirect_to root_path
else
render :new
end
end
private
def user_params
params.require(:user).permit(:email, :password)
end
end

View File

@ -1,2 +1,4 @@
class User < ActiveRecord::Base
validates :email, presence: true, uniqueness: true
validates :password_digest, presence: true
end

View File

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="ROBOTS" content="NOODP" />
<meta name="viewport" content="initial-scale=1" />
<title><%= content_for(:title) %> | <%= Rails.application.class.parent_name.titlecase %></title>
<%= stylesheet_link_tag "//fonts.googleapis.com/css?family=Lato:300,400,900", media: "all" %>
<%= stylesheet_link_tag "administrate/application", media: "all" %>
<%= stylesheet_link_tag "administrate/overrides", media: "all" %>
<%= csrf_meta_tags %>
</head>
<body class="administrate">
<main class="main">
<div class="sidebar">
<%= render "sidebar" -%>
<%= content_tag :div, class: :sign_out do %>
<%= link_to "Sign out", session_path, method: :delete %>
<% end %>
</div>
<div class="container">
<%= content_for(:search) %>
<div class="content">
<%= render "flashes" -%>
<%= yield %>
</div>
</div>
</main>
<%= render "javascript" %>
</body>
</html>

View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="ROBOTS" content="NOODP" />
<meta name="viewport" content="initial-scale=1" />
<title><%= content_for(:title) %> | <%= Rails.application.class.parent_name.titlecase %></title>
<%= stylesheet_link_tag "//fonts.googleapis.com/css?family=Lato:300,400,900", media: "all" %>
<%= stylesheet_link_tag "administrate/application", media: "all" %>
<%= stylesheet_link_tag "login", media: "all" %>
<%= csrf_meta_tags %>
</head>
<body class="administrate">
<main class="main">
<div class="container">
<div class="content">
<%= render "administrate/application/flashes" -%>
<%= yield %>
</div>
</div>
</main>
</body>
</html>

View File

@ -0,0 +1,13 @@
<%= form_for :session, url: session_path do |form| %>
<div>
<%= form.label :email %>
<%= form.email_field :email %>
</div>
<div>
<%= form.label :password %>
<%= form.password_field :password %>
</div>
<div>
<%= form.submit "Sign in" %>
</div>
<% end %>

View File

@ -0,0 +1,23 @@
<%= form_for @user do |form| %>
<% if @user.errors.any? %>
<%= pluralize(@user.errors.count, "error") %> prevented your account from being created:
<ul>
<% @user.errors.full_messages.each do |error_message| %>
<li><%= error_message %></li>
<% end %>
</ul>
<% end %>
<div>
<%= form.label :email %>
<%= form.email_field :email %>
</div>
<div>
<%= form.label :password %>
<%= form.password_field :password %>
</div>
<div>
<%= form.submit "Sign up" %>
</div>
<% end %>

View File

@ -1,6 +1,6 @@
# Be sure to restart your server when you modify this file.
DanBarberPhoto::Application.config.session_store :cookie_store, key: '_danbarberphoto_session', secure: true
DanBarberPhoto::Application.config.session_store :cookie_store, key: '_danbarberphoto_session'
# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information

View File

@ -0,0 +1,5 @@
en:
activerecord:
attributes:
user:
password_digest: "Password"

View File

@ -1,4 +1,12 @@
require 'monban/constraints/signed_in'
require 'monban/constraints/signed_out'
DanBarberPhoto::Application.routes.draw do
resource :session, only: [:new, :create, :destroy]
resources :users, only: [:new, :create]
resource :session, only: [:new, :create, :destroy]
resources :users, only: [:new, :create]
namespace :admin do
DashboardManifest::DASHBOARDS.each do |dashboard_resource|
resources dashboard_resource

View File

@ -1,8 +1,8 @@
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :email
t.string :password_digest, limit: 60
t.string :email, null: false
t.string :password_digest, null: false, limit: 60
t.timestamps null: false
end

View File

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20151023163642) do
ActiveRecord::Schema.define(version: 20151023165644) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -68,8 +68,8 @@ ActiveRecord::Schema.define(version: 20151023163642) do
add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree
create_table "users", force: :cascade do |t|
t.string "email"
t.string "password_digest", limit: 60
t.string "email", null: false
t.string "password_digest", limit: 60, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

View File

@ -3,5 +3,4 @@ FactoryGirl.define do
email "test@example.com"
password_digest ""
end
end