@@ -14,7 +14,7 @@ const dataAccess = require("../services/dataAccessLayer");
1414const { isLastPRMergedWithinDays } = require ( "../services/githubService" ) ;
1515const logger = require ( "../utils/logger" ) ;
1616const { SOMETHING_WENT_WRONG , INTERNAL_SERVER_ERROR } = require ( "../constants/errorMessages" ) ;
17- const { OVERDUE_TASKS } = require ( "../constants/users" ) ;
17+ const { OVERDUE_TASKS , ALL_USER_ROLES } = require ( "../constants/users" ) ;
1818const { getPaginationLink, getUsernamesFromPRs, getRoleToUpdate } = require ( "../utils/users" ) ;
1919const { setInDiscordFalseScript, setUserDiscordNickname } = require ( "../services/discordService" ) ;
2020const { generateDiscordProfileImageUrl } = require ( "../utils/discord-actions" ) ;
@@ -470,9 +470,9 @@ const getSelfDetails = async (req, res) => {
470470 * @param res {Object} - Express response object
471471 */
472472
473- const updateSelf = async ( req , res ) => {
473+ const updateSelf = async ( req , res , next ) => {
474474 try {
475- const { id : userId , roles : userRoles , discordId, incompleteUserDetails } = req . userData ;
475+ const { id : userId , roles : userRoles , discordId, incompleteUserDetails, role : existingRole } = req . userData ;
476476 const devFeatureFlag = req . query . dev === "true" ;
477477 const { user } = await dataAccess . retrieveUsers ( { id : userId } ) ;
478478 const { first_name : firstName , last_name : lastName , role } = req . body ;
@@ -488,7 +488,7 @@ const updateSelf = async (req, res) => {
488488 req . body . role = role ;
489489 await userQuery . setIncompleteUserDetails ( userId ) ;
490490 } else {
491- const alreadyHasRole = userRoles [ role ] ;
491+ const alreadyHasRole = ALL_USER_ROLES . includes ( existingRole ) ;
492492 if ( role && ! alreadyHasRole ) {
493493 req . body . role = role ;
494494 }
@@ -523,7 +523,6 @@ const updateSelf = async (req, res) => {
523523 }
524524 }
525525
526- // Handle developer-specific logic for disabledRoles
527526 if ( userRoles . in_discord && ! user . incompleteUserDetails ) {
528527 const membersInDiscord = await getDiscordMembers ( ) ;
529528 if ( ! Array . isArray ( membersInDiscord ) )
@@ -532,35 +531,17 @@ const updateSelf = async (req, res) => {
532531 if ( discordMember ) {
533532 const { roles } = discordMember ;
534533 if ( roles && roles . includes ( discordDeveloperRoleId ) ) {
535- // Developers can only update disabledRoles with dev flag
536- if ( req . body . disabledRoles ) {
537- if ( devFeatureFlag ) {
538- const updatedUser = await userQuery . addOrUpdate (
539- { disabled_roles : rolesToDisable } ,
540- userId ,
541- devFeatureFlag
542- ) ;
543- if ( updatedUser ) {
544- return res
545- . status ( 200 )
546- . send ( { message : "Privilege modified successfully!" , disabled_roles : rolesToDisable } ) ;
547- }
548- } else {
549- // disabledRoles without dev flag should return 403
550- return res . boom . forbidden (
551- "Developers can only update disabled_roles. Use profile service for updating other attributes."
552- ) ;
534+ if ( req . body . disabledRoles && devFeatureFlag ) {
535+ const updatedUser = await userQuery . addOrUpdate ( { disabled_roles : rolesToDisable } , userId , devFeatureFlag ) ;
536+ if ( updatedUser ) {
537+ return res
538+ . status ( 200 )
539+ . send ( { message : "Privilege modified successfully!" , disabled_roles : rolesToDisable } ) ;
553540 }
554541 }
555- // Check if developer is trying to update something other than disabledRoles
556- const hasOtherFields = Object . keys ( req . body ) . some (
557- ( key ) => key !== "disabledRoles" && req . body [ key ] !== undefined
542+ return res . boom . forbidden (
543+ "Developers can only update disabled_roles. Use profile service for updating other attributes."
558544 ) ;
559- if ( hasOtherFields ) {
560- return res . boom . forbidden (
561- "Developers can only update disabled_roles. Use profile service for updating other attributes."
562- ) ;
563- }
564545 }
565546 }
566547 }
@@ -576,7 +557,7 @@ const updateSelf = async (req, res) => {
576557 return res . boom . notFound ( "User not found" ) ;
577558 } catch ( error ) {
578559 logger . error ( `Error while updating user: ${ error } ` ) ;
579- return res . boom . serverUnavailable ( SOMETHING_WENT_WRONG ) ;
560+ return next ( error ) ;
580561 }
581562} ;
582563
0 commit comments