22component extends = " app.Controllers.Controller" {
33
44 function config () {
5- verifies (except = " index,loadUsers,loadRoles,addUser,store,delete,profile,changePassword,updatePassword,uploadProfilePic,updateProfilePic" , params = " key" , paramsTypes = " integer" , handler = " index" );
6- usesLayout (" /layout" );
5+ verifies (except = " index,loadUsers,loadRoles,addUser,store,delete,profile,changePassword,updatePassword,uploadProfilePic,updateProfilePic,checkAdminAccess" , params = " key" , paramsTypes = " integer" , handler = " index" );
6+ usesLayout (" /web/AdminController/layout" );
7+ filters (through = " checkAdminAccess" );
78 }
89
910 // read user
@@ -41,37 +42,12 @@ component extends="app.Controllers.Controller" {
4142
4243 // Save user logic here
4344 try {
44-
45- params .profilePicture = " " ;
46- var uploadPath = expandPath (" /files/" ); // Define the upload directory
47-
48- if (! directoryExists (uploadPath )) {
49- directoryCreate (uploadPath );
50- }
51-
52- // Handle file upload
53- if (structKeyExists (params , " profilePicture" ) && isDefined (" params.profilePicture" )) {
54- var uploadedFile = fileUpload (uploadPath , " profilePicture" );
55-
56- if (! structIsEmpty (uploadedFile ) && structKeyExists (uploadedFile , " serverFile" )) {
57- var originalFileName = uploadedFile .serverFile ; // This is the uploaded file name
58- var fileExtension = listLast (originalFileName , " ." ); // Extract extension
59- var uniqueFileName = createUUID () & " ." & fileExtension ; // Generate unique name
60-
61- // Rename file to unique name
62- var newFilePath = uploadPath & " /" & uniqueFileName ;
63- fileMove (uploadedFile .serverDirectory & " /" & originalFileName , newFilePath );
64-
65- // Store the relative file path
66- params .profilePicture = " /files/" & uniqueFileName ;
67- }
68- }
69-
7045 var message = saveUser (params );
71- redirectTo (action = " index" );
46+
47+ redirectTo (route = " user" , success = " User successfully added!" );
7248 } catch (any e ) {
7349 // Handle error
74- redirectTo (action = " error" , errorMessage = " Failed to save user." );
50+ redirectTo (action = " error" , error = " Failed to save user." );
7551 }
7652 }
7753
@@ -197,6 +173,18 @@ component extends="app.Controllers.Controller" {
197173 }
198174 // Business Logic
199175
176+ private function checkAdminAccess () {
177+ // Ensure only admin users can access these methods
178+ if (! isCurrentUserAdmin ()) {
179+ // Save the current URL in session
180+ saveRedirectUrl (cgi .script_name & " ?" & cgi .query_string );
181+ // Redirect to login page
182+ redirectTo (controller = " AuthController" , action = " login" , route = " auth-login" );
183+ return false ;
184+ }
185+ return true ;
186+ }
187+
200188 /**
201189 * Count total number of users
202190 */
@@ -254,7 +242,7 @@ component extends="app.Controllers.Controller" {
254242 user .firstname = userData .firstName ;
255243 user .lastname = userData .lastName ;
256244 user .email = userData .email ;
257- user .passwordHash = hash (userData .passwordHash );
245+ user .passwordHash = application . WHEELS . plugins . bcrypt . bCryptHashPW (userData .passwordHash , application . WHEELS . plugins . bcrypt . bCryptGenSalt () );
258246 user .status = application .wo .SetActive ();
259247 user .roleid = userData .roleid ;
260248 user .updatedAt = now ();
@@ -276,7 +264,7 @@ component extends="app.Controllers.Controller" {
276264 newUser .firstname = userData .firstName ;
277265 newUser .lastname = userData .lastName ;
278266 newUser .email = userData .email ;
279- newUser .passwordHash = hash (userData .passwordHash );
267+ newUser .passwordHash = application . WHEELS . plugins . bcrypt . bCryptHashPW (userData .passwordHash , application . WHEELS . plugins . bcrypt . bCryptGenSalt () );
280268 newUser .status = application .wo .SetActive ();
281269 newUser .roleid = userData .roleid ;
282270 newUser .createdAt = now ();
0 commit comments