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,6 +38,12 @@ const DEFAULT_USERNAME_UPDATE_FORM = {
error: null,
};
const DEFAULT_API_KEY_STATE = {
value: null,
isCreating: false,
error: null,
};
const filterProjectModels = (projectModels, search, isHidden) => {
let filteredProjectModels = projectModels.filter(
(projectModel) => projectModel.isHidden === isHidden,
@@ -67,6 +73,7 @@ export default class extends BaseModel {
phone: attr(),
organization: attr(),
language: attr(),
apiKeyPrefix: attr(),
subscribeToOwnCards: attr(),
subscribeToCardWhenCommenting: attr(),
turnOffRecentCardHighlighting: attr(),
@@ -86,6 +93,9 @@ export default class extends BaseModel {
usernameUpdateForm: attr({
getDefault: () => DEFAULT_USERNAME_UPDATE_FORM,
}),
apiKeyState: attr({
getDefault: () => DEFAULT_API_KEY_STATE,
}),
};
static reducer({ type, payload }, User) {
@@ -275,6 +285,53 @@ export default class extends BaseModel {
});
break;
case ActionTypes.USER_API_KEY_CREATE: {
const userModel = User.withId(payload.id);
userModel.apiKeyState = {
...userModel.apiKeyState,
isCreating: true,
};
break;
}
case ActionTypes.USER_API_KEY_CREATE__SUCCESS:
User.withId(payload.user.id).update({
...payload.user,
apiKeyState: {
...DEFAULT_API_KEY_STATE,
value: payload.apiKey,
},
});
break;
case ActionTypes.USER_API_KEY_CREATE__FAILURE: {
const userModel = User.withId(payload.id);
userModel.apiKeyState = {
...userModel.apiKeyState,
isCreating: false,
};
break;
}
case ActionTypes.USER_API_KEY_DELETE:
User.withId(payload.id).update({
apiKeyPrefix: null,
apiKeyState: DEFAULT_API_KEY_STATE,
});
break;
case ActionTypes.USER_API_KEY_VALUE_CLEAR: {
const userModel = User.withId(payload.id);
userModel.apiKeyState = {
...userModel.apiKeyState,
value: null,
};
break;
}
case ActionTypes.USER_DELETE:
User.withId(payload.id).deleteWithRelated();