phoenix_auth 0.2.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/README.md +2 -0
  2. data/app/assets/stylesheets/user.css +0 -0
  3. data/app/controllers/phoenix/base_controller_decorator.rb +8 -0
  4. data/app/controllers/phoenix/confirmations_controller.rb +16 -0
  5. data/app/controllers/phoenix/passwords_controller.rb +16 -0
  6. data/app/controllers/phoenix/profiles_controller.rb +17 -0
  7. data/app/controllers/phoenix/registrations_controller.rb +52 -0
  8. data/app/controllers/phoenix/sessions_controller.rb +35 -0
  9. data/app/controllers/phoenix/users_controller.rb +32 -0
  10. data/app/helpers/phoenix/users_helper.rb +4 -0
  11. data/app/mailers/phoenix/user_mailer.rb +30 -0
  12. data/app/models/phoenix/profile.rb +10 -0
  13. data/app/models/phoenix/user.rb +69 -0
  14. data/app/models/phoenix/user_observer.rb +7 -0
  15. data/app/views/phoenix/confirmations/new.html.haml +16 -0
  16. data/app/views/phoenix/layouts/login.html.erb +24 -0
  17. data/app/views/phoenix/layouts/login.html.haml +19 -0
  18. data/app/views/phoenix/layouts/mailer.html.haml +7 -0
  19. data/app/views/phoenix/passwords/edit.html.haml +21 -0
  20. data/app/views/phoenix/passwords/new.html.haml +13 -0
  21. data/app/views/phoenix/profiles/index.html.haml +2 -0
  22. data/app/views/phoenix/registrations/edit.html.haml +5 -0
  23. data/app/views/phoenix/registrations/new.html.erb +12 -0
  24. data/app/views/phoenix/registrations/new.html.haml +14 -0
  25. data/app/views/phoenix/sessions/authorization_failure.html.haml +23 -0
  26. data/app/views/phoenix/sessions/new.html.erb +41 -0
  27. data/app/views/phoenix/sessions/new.html.haml +27 -0
  28. data/app/views/phoenix/user_mailer/confirmation_instructions.html.haml +8 -0
  29. data/app/views/phoenix/user_mailer/reset_password_instructions.html.haml +16 -0
  30. data/app/views/phoenix/user_mailer/welcome_instructions.html.haml +2 -0
  31. data/app/views/phoenix/users/edit.html.haml +1 -0
  32. data/app/views/phoenix/users/index.html.haml +12 -0
  33. data/app/views/phoenix/users/profile.html.erb +8 -0
  34. data/app/views/phoenix/users/profile.html.haml +7 -0
  35. data/app/views/phoenix/users/show.html.haml +12 -0
  36. data/config/initializers/custom_devise_failure.rb +8 -0
  37. data/config/initializers/devise.rb +136 -0
  38. data/config/locales/devise/en.yml +51 -0
  39. data/config/locales/devise/zh-CN.yml +120 -0
  40. data/config/locales/devise/zh-TW.yml +119 -0
  41. data/config/routes.rb +21 -0
  42. data/lib/phoenix/auth.rb +10 -0
  43. data/lib/phoenix/auth/engine.rb +33 -0
  44. data/lib/phoenix/token_resource.rb +17 -0
  45. data/lib/phoenix_auth.rb +1 -0
  46. data/lib/tasks/phoenix_auth_tasks.rake +4 -0
  47. metadata +113 -0
@@ -0,0 +1,2 @@
1
+ Authentication:
2
+ manages users and sessions
File without changes
@@ -0,0 +1,8 @@
1
+ Phoenix::BaseController.class_eval do
2
+ before_filter :set_current_user
3
+
4
+ private
5
+ def set_current_user
6
+ Phoenix::User.current = current_user
7
+ end
8
+ end
@@ -0,0 +1,16 @@
1
+ module Phoenix
2
+ class ConfirmationsController < Devise::ConfirmationsController
3
+
4
+ def new
5
+ super
6
+ end
7
+
8
+ def create
9
+ super
10
+ end
11
+
12
+ def show
13
+ super
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Phoenix
2
+ class PasswordsController < Devise::PasswordsController
3
+
4
+ def create
5
+ super
6
+ end
7
+
8
+ def edit
9
+ super
10
+ end
11
+
12
+ def update
13
+ super
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ module Phoenix
2
+ class ProfilesController < Phoenix::BaseController
3
+
4
+ def index
5
+ #@profile = current_user.profile
6
+ end
7
+
8
+ def new
9
+ end
10
+
11
+ def edit
12
+ end
13
+
14
+ def update
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,52 @@
1
+ module Phoenix
2
+ class RegistrationsController < Devise::RegistrationsController
3
+ include Phoenix::Core::ControllerHelpers
4
+
5
+ #before_filter :check_registrations_open!
6
+ #ssl_required
7
+
8
+ layout "/phoenix/layouts/login"
9
+
10
+ def new
11
+ super
12
+ end
13
+
14
+ def create
15
+ @user = build_resource(params[:user])
16
+
17
+ if resource.save
18
+ set_flash_message(:notice, :signed_up)
19
+ fire_event('phoeinx.user.signup', :user => @user)
20
+ #sign_in_and_redirect(:user, @user)
21
+ redirect_to phoenix.root_path
22
+ else
23
+ clean_up_passwords(resource)
24
+ render_with_scope(:new)
25
+ end
26
+ end
27
+
28
+ # GET /resource/edit
29
+ def edit
30
+ super
31
+ end
32
+
33
+ # PUT /resource
34
+ def update
35
+ super
36
+ end
37
+
38
+ # DELETE /resource
39
+ def destroy
40
+ super
41
+ end
42
+
43
+
44
+ private
45
+ def check_registrations_open!
46
+ if AppConfig[:registrations_closed]
47
+ flash[:error] = 'registrations.closed'
48
+ redirect_to new_user_session_path
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,35 @@
1
+ module Phoenix
2
+ class SessionsController < Devise::SessionsController
3
+ include Phoenix::Core::ControllerHelpers
4
+
5
+ layout "/phoenix/layouts/login"
6
+
7
+ # GET /resource/sign_in
8
+ def new
9
+ super
10
+ end
11
+
12
+ # POST /resource/sign_in
13
+ def create
14
+ authenticate_user!
15
+
16
+ if user_signed_in?
17
+ respond_to do |format|
18
+ format.html {
19
+ flash.notice = "logged_in_succesfully111"
20
+ redirect_to phoenix.login_path
21
+ }
22
+ end
23
+ else
24
+ flash[:error] = 'devise.failure.invalid'
25
+ render :new
26
+ end
27
+ end
28
+
29
+ # GET /resource/sign_out
30
+ def destroy
31
+ session.clear
32
+ super
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,32 @@
1
+ module Phoenix
2
+ class UsersController < Phoenix::BaseController
3
+ before_filter :authenticate_user!, :except => [:index]
4
+
5
+ def index
6
+ @users = User.all
7
+ end
8
+
9
+ def edit
10
+ @user = current_user
11
+ end
12
+
13
+ def show
14
+ #redirect_to(root_path)
15
+ @user = User.find_by_slug(params[:id])
16
+ end
17
+
18
+ def update
19
+ @user = User.find_by_slug(params[:id])
20
+
21
+ respond_to do |format|
22
+ if @user.update_attributes(params[:user])
23
+ format.html { redirect_to(users_path, :notice => 'User Update Successful') }
24
+ format.json
25
+ else
26
+ format.html { render :action => "edit" }
27
+ format.json
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,4 @@
1
+ module Phoenix
2
+ module UsersHelper
3
+ end
4
+ end
@@ -0,0 +1,30 @@
1
+ module Phoenix
2
+ class UserMailer < Phoenix::BaseMailer
3
+ layout "/phoenix/layouts/mailer"
4
+
5
+ default :from => "Phoenix Engine <phoenix@lanvige.com>"
6
+
7
+ def confirmation_instructions(user)
8
+ @user = user
9
+ mail(:to => "#{user.name} <#{user.email}>",
10
+ :subject => I18n.t('devise.mailer.confirmation_instructions.subject'))
11
+ end
12
+
13
+ # UserMailer.welcome_instructions(@user).deliver
14
+ def welcome_instructions(user)
15
+ @user = user
16
+ mail(:to => "#{user.name} <#{user.email}>",
17
+ :subject => I18n.t('devise.mailer.welcome_instructions.subject'))
18
+ end
19
+
20
+ def reset_password_instructions(user)
21
+ @user = user
22
+ mail(:to => "#{user.name} <#{user.email}>",
23
+ :subject => I18n.t('devise.mailer.reset_password_instructions.subject'))
24
+ end
25
+
26
+ def unlock_instructions(user)
27
+ #devise_mail(user, :unlock_instructions)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,10 @@
1
+ module Phoenix
2
+ class Profile
3
+ include Mongoid::Document
4
+ include Mongoid::Timestamps
5
+
6
+ embedded_in :user
7
+
8
+ field :address
9
+ end
10
+ end
@@ -0,0 +1,69 @@
1
+ module Phoenix
2
+ class User
3
+ include Mongoid::Document
4
+ include Mongoid::Timestamps
5
+ include Mongoid::Slug
6
+
7
+ embeds_one :profile
8
+
9
+ # Set the collection name in MongoDB
10
+ self.collection_name = 'users'
11
+
12
+ # Include default devise modules. Others available are:
13
+ devise :database_authenticatable, :token_authenticatable, :registerable, :recoverable,
14
+ :rememberable, :trackable, :validatable, :timeoutable, :confirmable,
15
+ :encryptable, :encryptor => 'authlogic_sha512'
16
+
17
+ field :name
18
+ field :email
19
+ field :avatar
20
+ field :bio
21
+ field :website
22
+
23
+ # define the slug for mongoid_slug
24
+ slug :name
25
+
26
+ validates_presence_of :name
27
+ validates_format_of :name, :with => /\A[A-Za-z0-9_]+\z/
28
+ validates_length_of :name, :maximum => 32
29
+ validates_uniqueness_of :name, :email, :case_sensitive => false
30
+
31
+ attr_accessor :password_confirmation
32
+
33
+ # Setup accessible (or protected) attributes for user model
34
+ attr_accessible :name, :email, :password, :avatar, :password_confirmation, :remember_me
35
+
36
+ # devise confirm! method overriden
37
+ # Send a welcome mail when user confirmed registe with mail.
38
+ def confirm!
39
+ super
40
+ welcome_instructions
41
+ end
42
+
43
+ private
44
+ def self.current
45
+ Thread.current[:user]
46
+ end
47
+
48
+ def self.current=(user)
49
+ Thread.current[:user] = user
50
+ end
51
+
52
+ def welcome_instructions
53
+ UserMailer.welcome_instructions(self).deliver
54
+ end
55
+
56
+ # Generate a friendly string randomically to be used as token.
57
+ def self.friendly_token
58
+ SecureRandom.base64(15).tr('+/=', '-_ ').strip.delete("\n")
59
+ end
60
+
61
+ # Generate a token by looping and ensuring does not already exist.
62
+ def self.generate_token(column)
63
+ loop do
64
+ token = friendly_token
65
+ break token unless find(:first, :conditions => { column => token })
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,7 @@
1
+ module Phoenix
2
+ class UserObserver < Mongoid::Observer
3
+ def after_save(user)
4
+ # Create profile
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ %h2
2
+ Resend confirmation instructions
3
+
4
+ = form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post }) do |f|
5
+ = devise_error_messages!
6
+
7
+ %div
8
+ = f.label :email
9
+ %br
10
+ = f.email_field :email
11
+
12
+ %div
13
+ = f.submit "Resend confirmation instructions"
14
+
15
+ %br
16
+ = render :partial => "devise/shared/links"
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE HTML>
2
+ <html lang="en-US">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Auth</title>
6
+ <%= stylesheet_link_tag "application" %>
7
+ <%= javascript_include_tag "application" %>
8
+ <%= csrf_meta_tags %>
9
+ <!--[if lt IE 9]>
10
+ <%= javascript_include_tag "html5" %>
11
+ <![endif]-->
12
+ </head>
13
+ <body>
14
+ <header>
15
+
16
+ </header>
17
+ <div id="body">
18
+ <%= yield %>
19
+ </div>
20
+ <footer>
21
+
22
+ </footer>
23
+ </body>
24
+ </html>
@@ -0,0 +1,19 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %meta{:charset => 'utf-8'}
5
+
6
+ %title Login Page
7
+
8
+ %meta{'http-equiv' => 'X-UA-Compatible', :content => 'IE=edge,chrome=1'}
9
+ %meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}
10
+
11
+ = csrf_meta_tag
12
+ = javascript_include_tag 'application'
13
+ = stylesheet_link_tag :application
14
+
15
+ %body{:class => "body"}
16
+ = yield
17
+
18
+ </body>
19
+ </html>
@@ -0,0 +1,7 @@
1
+ %h1
2
+ Welcome using Phoenix Engine
3
+
4
+ = yield
5
+
6
+ %p
7
+ Phoenix Engine Mailer
@@ -0,0 +1,21 @@
1
+ %h2
2
+ Change your password
3
+
4
+ = form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f|
5
+ = devise_error_messages!
6
+ = f.hidden_field :reset_password_token
7
+
8
+ %div
9
+ = f.label :password, "New password"
10
+ %br
11
+ = f.password_field :password
12
+
13
+ %div
14
+ = f.label :password_confirmation, "Confirm new password"
15
+ %br
16
+ = f.password_field :password_confirmation
17
+
18
+ %div
19
+ = f.submit "Change my password"
20
+
21
+ = render :partial => "devise/shared/links"
@@ -0,0 +1,13 @@
1
+ %h3
2
+ = 'forgot password'
3
+
4
+ = form_for(resource, :as => resource_name, :url => password_path(resource_name)) do |f|
5
+ = devise_error_messages!
6
+
7
+ %p
8
+ = f.label :email
9
+ = f.text_field :email
10
+ %p
11
+
12
+ = f.submit 'send_password_instructions'
13
+ = render :partial => "devise/shared/links"
@@ -0,0 +1,2 @@
1
+ %h2
2
+ ProfilesController
@@ -0,0 +1,5 @@
1
+ %h3
2
+ edit
3
+
4
+ %br
5
+ haha
@@ -0,0 +1,12 @@
1
+ <div id="signup-form">
2
+ <h3>Sign Up</h3>
3
+ <%= simple_form_for( resource, :as => resource_name, :url => registration_path(resource_name) ) do |f| %>
4
+ <%= devise_error_messages!%>
5
+ <p><%= f.input :name%></p>
6
+ <p><%= f.input :email%></p>
7
+ <p><%= f.input :password%></p>
8
+ <p><%= f.input :password_confirmation%></p>
9
+ <p><%= f.button :submit%></p>
10
+ <p>end of form</p>
11
+ <% end %>
12
+ </div>