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
+42
View File
@@ -338,6 +338,45 @@ export function* updateCurrentUserAvatar(data) {
yield call(updateUserAvatar, currentUserId, data);
}
export function* createUserApiKey(id) {
yield put(actions.createUserApiKey(id));
let user;
let apiKey;
try {
({
item: user,
included: { apiKey },
} = yield call(request, api.createUserApiKey, id));
} catch (error) {
yield put(actions.createUserApiKey.failure(id, error));
return;
}
yield put(actions.createUserApiKey.success(user, apiKey));
}
export function* deleteUserApiKey(id) {
yield put(actions.deleteUserApiKey(id));
let user;
try {
({ item: user } = yield call(request, api.updateUser, id, {
apiKey: null,
}));
} catch (error) {
yield put(actions.deleteUserApiKey.failure(id, error));
return;
}
yield put(actions.deleteUserApiKey.success(user));
}
export function* clearUserApiKeyValue(id) {
yield put(actions.clearUserApiKeyValue(id));
}
export function* deleteUser(id) {
yield put(actions.deleteUser(id));
@@ -474,6 +513,9 @@ export default {
clearCurrentUserUsernameUpdateError,
updateUserAvatar,
updateCurrentUserAvatar,
createUserApiKey,
deleteUserApiKey,
clearUserApiKeyValue,
deleteUser,
handleUserDelete,
addUserToCard,
+9
View File
@@ -66,6 +66,15 @@ export default function* usersWatchers() {
takeEvery(EntryActionTypes.CURRENT_USER_AVATAR_UPDATE, ({ payload: { data } }) =>
services.updateCurrentUserAvatar(data),
),
takeEvery(EntryActionTypes.USER_API_KEY_CREATE, ({ payload: { id } }) =>
services.createUserApiKey(id),
),
takeEvery(EntryActionTypes.USER_API_KEY_DELETE, ({ payload: { id } }) =>
services.deleteUserApiKey(id),
),
takeEvery(EntryActionTypes.USER_API_KEY_VALUE_CLEAR, ({ payload: { id } }) =>
services.clearUserApiKeyValue(id),
),
takeEvery(EntryActionTypes.USER_DELETE, ({ payload: { id } }) => services.deleteUser(id)),
takeEvery(EntryActionTypes.USER_DELETE_HANDLE, ({ payload: { user } }) =>
services.handleUserDelete(user),