-
Notifications
You must be signed in to change notification settings - Fork 18
/
users_controller.rb
69 lines (60 loc) · 1.8 KB
/
users_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class UsersController < ApplicationController
before_filter :authenticate_user!, :only => :password_reset
before_filter :require_subdomain!, :only => :show
def new
@user = User.new
@forum = Forum.new
end
def create
@user = User.new(params[:user])
@user.password = params[:user][:password]
if @user.save
signin! @user, "Thanks for creating an account!"
else
try_login or render 'sessions/new'
end
end
def create_with_forum
@user = User.new(params[:user])
@user.password = params[:user][:password]
@forum = Forum.new(:subdomain => params[:subdomain])
if @user.valid? and @forum.valid?
@user.save!
@forum.save!
@forum.add_admin(@user)
signin! @user, "Thanks for creating an account!"
else
try_login or render :new
end
end
def show
@user = User.find(params[:id])
raise CanCan::AccessDenied.new("Not authorized!", :view, User) unless @user.member_of?(current_forum)
end
def password_reset
@user = current_user
if @user.authenticate(params[:old_password])
if params[:password] == params[:password_confirmation]
@user.password = params[:password]
if @user.save
redirect_to account_profile_path, :notice => "Password udpated!"
else
redirect_to account_profile_path, :notice => @user.errors.full_messages.join(" ")
end
else
redirect_to account_profile_path, :notice => "New password didn't match confirmation"
end
else
redirect_to account_profile_path, :notice => "Old password didn't match"
end
end
protected
def try_login
if user = User.first(conditions: {email: @user.email}) and user.authenticate(params[:user][:password])
signin! user
true
else
false
end
end
end