SailsJS: фильтр find показывает только ресурсы, принадлежащие аутентифицированному пользователю - PullRequest
1 голос
/ 04 мая 2019

Я новичок в бэкэнд-разработке с Sails, я хотел бы знать, как я могу запретить пользователям перечислять ресурсы, которые им не принадлежат, вот мои модели:

models / User.js:

var bcrypt = require('bcryptjs')

module.exports = {
  attributes: {
    //  ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦  ╦╔═╗╔═╗
    //  ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗
    //  ╩  ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝
    password: {type: 'string', required: true},
    email: {type: 'string', required: true, unique: true},
    firstName: {type: 'string', allowNull: true},
    lastName: {type: 'string', allowNull: true},
    phoneNumber: {type: 'string', allowNull: true},

    //  ╔═╗╔╦╗╔╗ ╔═╗╔╦╗╔═╗
    //  ║╣ ║║║╠╩╗║╣  ║║╚═╗
    //  ╚═╝╩ ╩╚═╝╚═╝═╩╝╚═╝

    //  ╔═╗╔═╗╔═╗╔═╗╔═╗╦╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
    //  ╠═╣╚═╗╚═╗║ ║║  ║╠═╣ ║ ║║ ║║║║╚═╗
    //  ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝
    bankAccounts: {collection: 'bankAccount', via: 'user'},
  },

  customToJSON: function() {
    return _.omit(this, ['password', 'updatedAt'])
  },
  beforeCreate: function(values, cb) {
    bcrypt.hash(values.password, 10, (err, hash) => {
      if (err) return cb(err)
      values.password = hash
      cb()
    })
  },
}

models / BankAccount.js:

module.exports = {
  attributes: {
    //  ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦  ╦╔═╗╔═╗
    //  ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗
    //  ╩  ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝
    user: {model: 'user'},
    name: {type: 'string', required: true},
    iban: {type: 'string', required: true, unique: true, maxLength: 34},
    bic: {type: 'string', required: true, maxLength: 11},
    //  ╔═╗╔╦╗╔╗ ╔═╗╔╦╗╔═╗
    //  ║╣ ║║║╠╩╗║╣  ║║╚═╗
    //  ╚═╝╩ ╩╚═╝╚═╝═╩╝╚═╝

    //  ╔═╗╔═╗╔═╗╔═╗╔═╗╦╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
    //  ╠═╣╚═╗╚═╗║ ║║  ║╠═╣ ║ ║║ ║║║║╚═╗
    //  ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝
  },
}

Я хотел бы запретить пользователю видеть все учетные записи, когда он делает GET /user/, и запретить ему перечислять другиебанковские счета, чем его, когда он делает GET /bank_account/ или для доступа к GET /bank_account/:id, если id не является одним из его счетов.

Для возобновления его можно рассматривать как политику isOwner, ноне мог найти один!

Надеюсь, вы поможете мне, и я достаточно ясен, чтобы вы поняли, не стесняйтесь, скажите мне, могу ли я дать больше подробностей или объяснить больше мою проблему.

...