feat: Add API key authentication (#1254)

Closes #945
This commit is contained in:
Samuel
2025-11-06 20:56:48 +01:00
committed by GitHub
parent 5a2564f575
commit b4cbd32bf2
75 changed files with 1501 additions and 94 deletions

View File

@@ -38,13 +38,23 @@ module.exports = {
values.email = values.email.toLowerCase();
}
let isOnlyEmailChange = false;
let isOnlyPasswordChange = false;
if (_.isNull(values.apiKey)) {
Object.assign(values, {
apiKeyPrefix: null,
apiKeyHash: null,
apiKeyCreatedAt: null,
});
delete values.apiKey;
}
let isOnlyPrivateFieldsChange = false;
let isOnlyPersonalFieldsChange = false;
let isOnlyPasswordChange = false;
let isDeactivatedChangeToTrue = false;
if (!_.isUndefined(values.email) && Object.keys(values).length === 1) {
isOnlyEmailChange = true;
if (_.difference(Object.keys(values), User.PRIVATE_FIELD_NAMES).length === 0) {
isOnlyPrivateFieldsChange = true;
}
if (_.difference(Object.keys(values), User.PERSONAL_FIELD_NAMES).length === 0) {
@@ -64,6 +74,10 @@ module.exports = {
values.username = values.username.toLowerCase();
}
if (values.apiKeyHash) {
values.apiKeyCreatedAt = new Date().toISOString();
}
if (values.isDeactivated && values.isDeactivated !== inputs.record.isDeactivated) {
isDeactivatedChangeToTrue = true;
}
@@ -154,7 +168,7 @@ module.exports = {
);
});
if (!isOnlyEmailChange) {
if (!isOnlyPrivateFieldsChange) {
if (inputs.record.role === User.Roles.ADMIN && user.role !== User.Roles.ADMIN) {
const managerProjectIds = await sails.helpers.users.getManagerProjectIds(user.id);