Skip to content

Commit 12816cf

Browse files
author
Nuo Yan
committed
WebUI Users work
1 parent 4be86dd commit 12816cf

5 files changed

Lines changed: 40 additions & 7 deletions

File tree

chef-server-api/lib/chef-server-api.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,17 @@ def self.activate
7777

7878
Chef::Log.info('Loading roles')
7979
Chef::Role.sync_from_disk_to_couchdb
80+
81+
# Create the default WebUI admin user "admin" if not already exists
82+
begin
83+
user = Chef::WebUIUser.load(Chef::Config[:web_ui_admin_user_name])
84+
rescue
85+
user = Chef::WebUIUser.new
86+
user.name = Chef::Config[:web_ui_admin_user_name]
87+
user.set_password(Chef::Config[:web_ui_admin_default_password])
88+
user.admin = true
89+
user.save
90+
end
8091

8192
# Create the signing key and certificate
8293
Chef::Certificate.generate_signing_ca
@@ -141,9 +152,9 @@ def self.setup_router(scope)
141152

142153
scope.match('/').to(:controller => 'main', :action =>'index').name(:top)
143154
end
144-
145155
end
146156

157+
147158
# Setup the slice layout for ChefServerApi
148159
#
149160
# Use ChefServerApi.push_path and ChefServerApi.push_app_path

chef-server-webui/app/controllers/application.rb

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,32 @@ def escape_node_id(arg=nil)
6363
arg.gsub(/\./, '_')
6464
end
6565

66+
# Check if the user is logged in and if the user still exists
6667
def login_required
6768
if session[:user]
68-
return session[:user]
69+
begin
70+
Chef::WebUIUser.load(session[:user]) rescue (raise NotFound, "Cannot find User #{session[:user]}, maybe it got deleted by an Administrator.")
71+
rescue
72+
logout_and_redirect_to_login
73+
else
74+
return session[:user]
75+
end
6976
else
7077
self.store_location
7178
throw(:halt, :access_denied)
7279
end
7380
end
7481

82+
def cleanup_session
83+
[:user,:level].each { |n| session.delete(n) }
84+
end
85+
86+
def logout_and_redirect_to_login
87+
cleanup_session
88+
@user = Chef::WebUIUser.new
89+
redirect(slice_url(:users_login), {:message => { :error => $! }, :permanent => true})
90+
end
91+
7592
def authorized_node
7693
# if session[:level] == :admin
7794
# Chef::Log.debug("Authorized as Administrator")

chef-server-webui/app/controllers/openid_consumer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def complete
111111
end
112112

113113
def logout
114-
[:user,:level].each { |n| session.delete(n) }
114+
cleanup_session
115115
redirect slice_url(:top)
116116
end
117117

chef-server-webui/app/controllers/users.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def complete
145145
end
146146

147147
def logout
148-
[:user,:level].each { |n| session.delete(n) }
148+
cleanup_session
149149
redirect slice_url(:top)
150150
end
151151

@@ -165,8 +165,13 @@ def destroy
165165
private
166166

167167
def set_user_and_redirect
168-
@user = Chef::WebUIUser.load(session[:user])
169-
redirect(slice_url(:users_show, :user_id => session[:user]), {:message => { :error => $! }, :permanent => true})
168+
begin
169+
@user = Chef::WebUIUser.load(session[:user]) rescue (raise NotFound, "Cannot find User #{session[:user]}, maybe it got deleted by an Administrator.")
170+
rescue
171+
logout_and_redirect_to_login
172+
else
173+
redirect(slice_url(:users_show, :user_id => session[:user]), {:message => { :error => $! }, :permanent => true})
174+
end
170175
end
171176

172177
def redirect_to_list_users(message)

chef-server-webui/lib/chef-server-webui.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ def self.setup_router(scope)
128128
# scope.default_routes
129129
end
130130

131-
# Create the default admin user "admin" if not already exists
131+
# Create the default admin user "admin" if not already exists, this code is also in chef-server-api/lib/chef-server-api.rb
132132
begin
133133
user = Chef::WebUIUser.load(Chef::Config[:web_ui_admin_user_name])
134134
rescue Chef::Exceptions::CouchDBNotFound => e

0 commit comments

Comments
 (0)