HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/dev/nowruzgan/rest/api/controllers/user/update-me.js
module.exports = {
  friendlyName: 'Update me',
  description: '',

  inputs: {
    firstName: {
      type: 'string',
    },

    lastName: {
      type: 'string',
    },
  },

  exits: {
    forbidden: { statusCode: 403 },
    notFound: { statusCode: 404 },
    dbError: { statusCode: 500 },
  },

  getActions: () => ({'user.update-me': 'تغییر مشخصات خودم'}),

  fn: async function (inputs, exits) {
    let session = this.req.sessionData;
    let action = 'user.update-me';
    await sails.helpers.permit(action, session).intercept('reject', 'forbidden');
    sails.log.info({session, action, message: `updating user info`});
    if(!session.user) return exits.notFound();

    let user = await User.findOne({id: session.user.id})
      .intercept(sails.log.interceptError(session, action, `on finding the user`, 'dbError'));

    if(inputs.firstName!==undefined)
      user.firstName = inputs.firstName;
    if(inputs.lastName!==undefined)
      user.lastName = inputs.lastName;
    await User.update({id: user.id}, {firstName: inputs.firstName, lastName: inputs.lastName})
      .intercept(sails.log.interceptError(session, action, `on updating the user`, 'dbError'));

    let sessionData = {
      user: {
        id: user.id,
        firstName: user.firstName,
        lastName: user.lastName,
        phone: user.phone,
        role: user.role,

        subscriptionType: user.subscriptionType,
        bazaarSubscription: user.bazaarSubscription,
        bazaarSubscribedSKU: user.bazaarSubscribedSKU,
        bazaarSubscriptionExpiration: user.bazaarSubscriptionExpiration,
      },
      userPrivate: user,
      token: session.token,
      timestamp: (new Date()).valueOf()
    }
    await sails.helpers.cache.with({action: 'set', key: `${session.token}:session`, value: session});
    
    return exits.success(user);
  }
};