Class: Caboose::UsersController

Inherits:
ApplicationController show all
Defined in:
app/controllers/caboose/users_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#before_before_action, #logged_in?, #logged_in_user, #login_user, #reject_param, #user_is_allowed, #validate_cookie, #validate_token, #var, #verify_logged_in

Instance Method Details

#before_actionObject



6
7
8
# File 'app/controllers/caboose/users_controller.rb', line 6

def before_action
  @page = Page.page_with_uri('/admin')
end

#createObject

POST /admin/users



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'app/controllers/caboose/users_controller.rb', line 94

def create
  return if !user_is_allowed('users', 'add')
  
  resp = StdClass.new({
      'error' => nil,
      'redirect' => nil
  })
  
  user = User.new()
  user.username = params[:username]
  
  if (user.username.length == 0)
    resp.error = "Your username is required."
  elsif      
    user.save
    resp.redirect = "/admin/users/#{user.id}/edit"
  end
  render json: resp
end

#destroyObject

DELETE /admin/users/1



155
156
157
158
159
160
161
162
163
164
# File 'app/controllers/caboose/users_controller.rb', line 155

def destroy
  return if !user_is_allowed('users', 'delete')
  user = User.find(params[:id])
  user.destroy
  
  resp = StdClass.new({
    'redirect' => '/admin/users'
  })
  render json: resp
end

#editObject

GET /admin/users/1/edit



80
81
82
83
84
85
# File 'app/controllers/caboose/users_controller.rb', line 80

def edit
  return if !user_is_allowed('users', 'edit')
  @edituser = User.find(params[:id])    
  @all_roles = Role.tree
  @roles = Role.roles_with_user(@edituser.id)
end

#edit_passwordObject

GET /admin/users/1/edit-password



88
89
90
91
# File 'app/controllers/caboose/users_controller.rb', line 88

def edit_password
  return if !user_is_allowed('users', 'edit')
  @edituser = User.find(params[:id])
end

#indexObject

GET /admin/users



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'app/controllers/caboose/users_controller.rb', line 56

def index
  return if !user_is_allowed('users', 'view')
  
  @gen = PageBarGenerator.new(params, {
		  'first_name'  => '',
		  'last_name'		=> '',
		  'username'	  => '',
		  'email' 		  => '',
		},{
		  'model'       => 'Caboose::User',
	    'sort'			  => 'last_name, first_name',
		  'desc'			  => false,
		  'base_url'		=> '/admin/users'
	})
	@users = @gen.items
end

#my_accountObject

GET /my-account



15
16
17
18
19
# File 'app/controllers/caboose/users_controller.rb', line 15

def 
  return if !logged_in?
  @user = logged_in_user
  render :layout => 'caboose/modal'
end

#newObject

GET /admin/users/new



74
75
76
77
# File 'app/controllers/caboose/users_controller.rb', line 74

def new
  return if !user_is_allowed('users', 'add')
  @newuser = User.new
end

#optionsObject

GET /admin/users/options



167
168
169
170
171
172
# File 'app/controllers/caboose/users_controller.rb', line 167

def options
  return if !user_is_allowed('users', 'view')
  @users = User.reorder('last_name, first_name').all
  options = @users.collect { |u| { 'value' => u.id, 'text' => "#{u.first_name} #{u.last_name}"}}
  render json: options
end

#updateObject

PUT /admin/users/1



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'app/controllers/caboose/users_controller.rb', line 115

def update
  return if !user_is_allowed('users', 'edit')

  resp = StdClass.new     
  user = User.find(params[:id])

  save = true
  params.each do |name,value|
    case name
	  	when "first_name", "last_name", "username", "email"
	  	  user[name.to_sym] = value
	  	when "password"			  
	  	  confirm = params[:confirm]
	  		if (value != confirm)			
	  		  resp.error = "Passwords do not match.";
	  		  save = false
	  		elsif (value.length < 8)
	  		  resp.error = "Passwords must be at least 8 characters.";
	  		  save = false
	  		else
	  		  user.password = Digest::SHA1.hexdigest(Caboose::salt + value)
	  		end
	  	when "roles"
	  	  user.roles = [];
	  	  value.each { |rid| user.roles << Role.find(rid) } unless value.nil?
	  	  resp.attribute = { 'text' => user.roles.collect{ |r| r.name }.join(', ') }    		  
	  end
	end
	
	resp.success = save && user.save
	render json: resp
end

#update_my_accountObject

PUT /my-account



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
# File 'app/controllers/caboose/users_controller.rb', line 22

def   
  return if !logged_in?
  
  resp = StdClass.new     
  user = logged_in_user

  save = true
  params.each do |name,value|
    case name
	  	when "first_name", "last_name", "username", "email", "phone"
	  	  user[name.to_sym] = value
	  	when "password"			  
	  	  confirm = params[:confirm]
	  		if (value != confirm)			
	  		  resp.error = "Passwords do not match.";
	  		  save = false
	  		elsif (value.length < 8)
	  		  resp.error = "Passwords must be at least 8 characters.";
	  		  save = false
	  		else
	  		  user.password = Digest::SHA1.hexdigest(Caboose::salt + value)
	  		end    	  	    		  
	  end
	end
	
	resp.success = save && user.save
	render json: resp
end

#update_picObject

POST /admin/users/1/update-pic



149
150
151
152
# File 'app/controllers/caboose/users_controller.rb', line 149

def update_pic
  @edituser = User.find(params[:id])
  @new_value = "Testing"
end