UI to prevent suspended users viewing the application

This commit is contained in:
Jori Lallo
2018-03-04 22:18:23 -08:00
parent 1c2b3e992e
commit 1a8ca20fce
8 changed files with 49 additions and 9 deletions

View File

@@ -75,7 +75,9 @@ export default function auth() {
}
}
if (user.isSuspended) throw new UserSuspendedError();
if (user.isSuspended) {
throw new UserSuspendedError();
}
ctx.state.token = token;
ctx.state.user = user;

View File

@@ -22,7 +22,9 @@ export function AdminRequiredError(
export function UserSuspendedError(
message: string = 'Your access has been suspended by the team admin'
) {
return httpErrors(403, message, { id: 'user_suspended' });
return httpErrors(403, message, {
id: 'user_suspended',
});
}
export function InvalidRequestError(message: string = 'Request invalid') {

View File

@@ -2,6 +2,10 @@ module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.addColumn('users', 'suspendedById', {
type: Sequelize.UUID,
allowNull: true,
references: {
model: 'users',
},
});
await queryInterface.addColumn('users', 'suspendedAt', {
type: Sequelize.DATE,

View File

@@ -49,10 +49,6 @@ User.associate = models => {
User.hasMany(models.ApiKey, { as: 'apiKeys' });
User.hasMany(models.Document, { as: 'documents' });
User.hasMany(models.View, { as: 'views' });
User.belongsTo(models.User, {
as: 'suspendedBy',
foreignKey: 'suspendedById',
});
};
// Instance methods