Permalink
Browse files

Brought in devise

  • Loading branch information...
1 parent 475fe55 commit 7915cbf9dc6be24812bd3cf4269fa74983d197f2 @arunsark committed May 4, 2011
Showing with 667 additions and 53 deletions.
  1. +1 −0 Gemfile
  2. +9 −0 Gemfile.lock
  3. +5 −0 app/controllers/application_controller.rb
  4. +10 −3 app/controllers/comments_controller.rb
  5. +4 −0 app/controllers/posts_controller.rb
  6. +9 −0 app/models/comment.rb
  7. +20 −4 app/models/post.rb
  8. +8 −0 app/models/user.rb
  9. +2 −2 app/views/comments/_comment.html.erb
  10. +16 −1 app/views/comments/_new.html.erb
  11. +12 −0 app/views/devise/confirmations/new.html.erb
  12. +5 −0 app/views/devise/mailer/confirmation_instructions.html.erb
  13. +8 −0 app/views/devise/mailer/reset_password_instructions.html.erb
  14. +7 −0 app/views/devise/mailer/unlock_instructions.html.erb
  15. +16 −0 app/views/devise/passwords/edit.html.erb
  16. +12 −0 app/views/devise/passwords/new.html.erb
  17. +25 −0 app/views/devise/registrations/edit.html.erb
  18. +18 −0 app/views/devise/registrations/new.html.erb
  19. +17 −0 app/views/devise/sessions/new.html.erb
  20. +25 −0 app/views/devise/shared/_links.erb
  21. +12 −0 app/views/devise/unlocks/new.html.erb
  22. +1 −1 app/views/layouts/application.html.erb
  23. +8 −1 app/views/posts/_form.html.erb
  24. +2 −29 app/views/posts/new.html.erb
  25. +3 −11 app/views/posts/show.html.erb
  26. +12 −0 app/views/users/confirmations/new.html.erb
  27. +5 −0 app/views/users/mailer/confirmation_instructions.html.erb
  28. +8 −0 app/views/users/mailer/reset_password_instructions.html.erb
  29. +7 −0 app/views/users/mailer/unlock_instructions.html.erb
  30. +16 −0 app/views/users/passwords/edit.html.erb
  31. +12 −0 app/views/users/passwords/new.html.erb
  32. +25 −0 app/views/users/registrations/edit.html.erb
  33. +18 −0 app/views/users/registrations/new.html.erb
  34. +17 −0 app/views/users/sessions/new.html.erb
  35. +25 −0 app/views/users/shared/_links.erb
  36. +12 −0 app/views/users/unlocks/new.html.erb
  37. +185 −0 config/initializers/devise.rb
  38. +48 −0 config/locales/devise.en.yml
  39. +3 −1 config/routes.rb
  40. +11 −0 test/fixtures/users.yml
  41. +8 −0 test/unit/user_test.rb
View
@@ -6,6 +6,7 @@ gem 'bson_ext'
gem 'mongoid_slug', :require => 'mongoid/slug'
gem 'formtastic'
gem 'jquery-rails'
+gem 'devise'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
View
@@ -29,9 +29,14 @@ GEM
activesupport (= 3.0.7)
activesupport (3.0.7)
arel (2.0.9)
+ bcrypt-ruby (2.1.4)
bson (1.3.0)
bson_ext (1.3.0)
builder (2.1.2)
+ devise (1.2.1)
+ bcrypt-ruby (~> 2.1.2)
+ orm_adapter (~> 0.0.3)
+ warden (~> 1.0.3)
erubis (2.6.6)
abstract (>= 1.0.0)
formtastic (1.2.3)
@@ -58,6 +63,7 @@ GEM
mongoid_slug (0.7.2)
mongoid (~> 2.0.0)
stringex (~> 1.2.0)
+ orm_adapter (0.0.4)
polyglot (0.3.1)
rack (1.2.2)
rack-mount (0.6.14)
@@ -83,13 +89,16 @@ GEM
treetop (1.4.9)
polyglot (>= 0.3.1)
tzinfo (0.3.27)
+ warden (1.0.3)
+ rack (>= 1.0.0)
will_paginate (3.0.pre2)
PLATFORMS
ruby
DEPENDENCIES
bson_ext
+ devise
formtastic
jquery-rails
mongoid
@@ -1,3 +1,8 @@
class ApplicationController < ActionController::Base
protect_from_forgery
+
+ protected
+ def authenticate
+ user_signed_in?
+ end
end
@@ -1,9 +1,16 @@
class CommentsController < ApplicationController
def create
- @post = Post.find_by_slug(params[:post_id])
- @comment = @post.comments.create!(params[:comment])
- redirect_to @post, :notice => "Thanks for the comment"
+ begin
+ @post = Post.find_by_slug(params[:post_id])
+ @comment = @post.comments.new(params[:comment])
+ @comment.save!
+ redirect_to @post, :notice => "Thanks for the comment"
+ rescue Exception => e
+ logger.debug "Comment creation error #{e.inspect}"
+ flash[:alert] = "Please fill in all the data"
+ render 'posts/show'
+ end
end
def new
@@ -1,4 +1,6 @@
class PostsController < ApplicationController
+
+ before_filter :authenticate_user!, :only=>[:new,:create,:destroy,:update]
# GET /posts
# GET /posts.xml
def index
@@ -14,6 +16,7 @@ def index
# GET /posts/1.xml
def show
@post = Post.find_by_slug(params[:id])
+ @comment = @post.comments.new
logger.debug "No. of comments for post #{@post.title} is #{@post.comments.size}"
respond_to do |format|
format.html # show.html.erb
@@ -41,6 +44,7 @@ def edit
# POST /posts.xml
def create
@post = Post.new(params[:post])
+ @post.users << current_user
logger.debug "Going to save #{Rails.logger.level} #{@post.title.inspect}"
respond_to do |format|
begin
View
@@ -6,5 +6,14 @@ class Comment
field :content
field :published_on, :type => DateTime
+ validates_presence_of :author, :email, :content
+
+ before_save :set_published_on
+
embedded_in :post, :inverse_of => :comments
+
+ private
+ def set_published_on
+ self.published_on = DateTime.now
+ end
end
View
@@ -1,27 +1,43 @@
class Post
include Mongoid::Document
include Mongoid::Slug
-
+
+ attr_accessor :post_tags
+ attr_accessible :title, :content, :post_tags
field :title
field :content
field :slug
field :published_on, :type => DateTime
+ field :tags, :type => Array
validates_presence_of :title, :content
embeds_many :comments
index :slug, unique:true
validates_uniqueness_of :title, :case_sensitive => false
+ before_save :set_published_on, :generate_slug, :generate_tags
+ slug :slug
- before_save :set_published_on, :generate_slug
+ has_and_belongs_to_many :users
- slug :slug
+ #accepts_nested_attributes_for :comment
+
+ def get_tags
+ if self.tags
+ self.tags.inject{|tag_string,tag| tag_string + ", " + tag}
+ end
+ end
private
def set_published_on
self.published_on = DateTime.now
end
def generate_slug
self.slug = self.title.downcase.gsub(/[^[:alnum:]]/,'-').gsub(/-{2,}/,'-')
- puts "Generated slug #{self.slug}"
+ end
+
+ def generate_tags
+ if post_tags
+ self.tags = post_tags.split(/,/).collect{ |tag| tag.strip }
+ end
end
end
View
@@ -0,0 +1,8 @@
+class User
+ include Mongoid::Document
+ # Include default devise modules. Others available are:
+ # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
+ devise :database_authenticatable, :registerable,
+ :recoverable, :rememberable, :trackable, :validatable
+ has_and_belongs_to_many :posts
+end
@@ -1,4 +1,4 @@
-
-<h3><%= comment.author %> </h3>
+<h3> <%= comment.author %> </h3>
<p> <%= comment.published_on %> </p>
<p> <%= comment.content %> </p>
+
@@ -1,5 +1,20 @@
+<% form_for [@post,@comment] do |f| %>
+ <% if @comment.errors.any? %>
+ <div id="error_explanation">
+ <h2><%= pluralize(@comment.errors.count, "error") %> prohibited this post from being saved:</h2>
+
+ <ul>
+ <% @comment.errors.full_messages.each do |msg| %>
+ <li><%= msg %></li>
+ <% end %>
+ </ul>
+ </div>
+ <% end %>
+
+ <% if flash[:alert] %>
+ <p id="notice"><%= flash[:alert] %> </p>
+ <% end %>
-<% form_for [@post,Comment.new] do |f| %>
<div class="field">
<%= f.label :author %><br />
<%= f.text_field :author %>
@@ -0,0 +1,12 @@
+<h2>Resend confirmation instructions</h2>
+
+<%= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post }) do |f| %>
+ <%= devise_error_messages! %>
+
+ <p><%= f.label :email %><br />
+ <%= f.email_field :email %></p>
+
+ <p><%= f.submit "Resend confirmation instructions" %></p>
+<% end %>
+
+<%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,5 @@
+<p>Welcome <%= @resource.email %>!</p>
+
+<p>You can confirm your account through the link below:</p>
+
+<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>
@@ -0,0 +1,8 @@
+<p>Hello <%= @resource.email %>!</p>
+
+<p>Someone has requested a link to change your password, and you can do this through the link below.</p>
+
+<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>
+
+<p>If you didn't request this, please ignore this email.</p>
+<p>Your password won't change until you access the link above and create a new one.</p>
@@ -0,0 +1,7 @@
+<p>Hello <%= @resource.email %>!</p>
+
+<p>Your account has been locked due to an excessive amount of unsuccessful sign in attempts.</p>
+
+<p>Click the link below to unlock your account:</p>
+
+<p><%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token) %></p>
@@ -0,0 +1,16 @@
+<h2>Change your password</h2>
+
+<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %>
+ <%= devise_error_messages! %>
+ <%= f.hidden_field :reset_password_token %>
+
+ <p><%= f.label :password, "New password" %><br />
+ <%= f.password_field :password %></p>
+
+ <p><%= f.label :password_confirmation, "Confirm new password" %><br />
+ <%= f.password_field :password_confirmation %></p>
+
+ <p><%= f.submit "Change my password" %></p>
+<% end %>
+
+<%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,12 @@
+<h2>Forgot your password?</h2>
+
+<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %>
+ <%= devise_error_messages! %>
+
+ <p><%= f.label :email %><br />
+ <%= f.email_field :email %></p>
+
+ <p><%= f.submit "Send me reset password instructions" %></p>
+<% end %>
+
+<%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,25 @@
+<h2>Edit <%= resource_name.to_s.humanize %></h2>
+
+<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
+ <%= devise_error_messages! %>
+
+ <p><%= f.label :email %><br />
+ <%= f.email_field :email %></p>
+
+ <p><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
+ <%= f.password_field :password %></p>
+
+ <p><%= f.label :password_confirmation %><br />
+ <%= f.password_field :password_confirmation %></p>
+
+ <p><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
+ <%= f.password_field :current_password %></p>
+
+ <p><%= f.submit "Update" %></p>
+<% end %>
+
+<h3>Cancel my account</h3>
+
+<p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.</p>
+
+<%= link_to "Back", :back %>
@@ -0,0 +1,18 @@
+<h2>Sign up</h2>
+
+<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
+ <%= devise_error_messages! %>
+
+ <p><%= f.label :email %><br />
+ <%= f.email_field :email %></p>
+
+ <p><%= f.label :password %><br />
+ <%= f.password_field :password %></p>
+
+ <p><%= f.label :password_confirmation %><br />
+ <%= f.password_field :password_confirmation %></p>
+
+ <p><%= f.submit "Sign up" %></p>
+<% end %>
+
+<%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,17 @@
+<h2>Sign in</h2>
+
+<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
+ <p><%= f.label :email %><br />
+ <%= f.email_field :email %></p>
+
+ <p><%= f.label :password %><br />
+ <%= f.password_field :password %></p>
+
+ <% if devise_mapping.rememberable? -%>
+ <p><%= f.check_box :remember_me %> <%= f.label :remember_me %></p>
+ <% end -%>
+
+ <p><%= f.submit "Sign in" %></p>
+<% end %>
+
+<%= render :partial => "devise/shared/links" %>
@@ -0,0 +1,25 @@
+<%- if controller_name != 'sessions' %>
+ <%= link_to "Sign in", new_session_path(resource_name) %><br />
+<% end -%>
+
+<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
+ <%= link_to "Sign up", new_registration_path(resource_name) %><br />
+<% end -%>
+
+<%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
+ <%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
+<% end -%>
+
+<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
+ <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
+<% end -%>
+
+<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
+ <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
+<% end -%>
+
+<%- if devise_mapping.omniauthable? %>
+ <%- resource_class.omniauth_providers.each do |provider| %>
+ <%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider) %><br />
+ <% end -%>
+<% end -%>
@@ -0,0 +1,12 @@
+<h2>Resend unlock instructions</h2>
+
+<%= form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f| %>
+ <%= devise_error_messages! %>
+
+ <p><%= f.label :email %><br />
+ <%= f.email_field :email %></p>
+
+ <p><%= f.submit "Resend unlock instructions" %></p>
+<% end %>
+
+<%= render :partial => "devise/shared/links" %>
@@ -3,7 +3,7 @@
<head>
<title>MongoidDeviseBlog</title>
<%= stylesheet_link_tag :all %>
- <%= javascript_include_tag 'rails', 'jquery.min'%>
+ <%= javascript_include_tag 'jquery.min','rails'%>
<%= csrf_meta_tag %>
</head>
<body>
Oops, something went wrong.

0 comments on commit 7915cbf

Please sign in to comment.