fix(#91): fix repository claim

This commit is contained in:
tdurieux
2021-09-26 07:36:36 +02:00
parent ad49eedebc
commit 55d1d38452
2 changed files with 21 additions and 4 deletions

View File

@@ -13,6 +13,7 @@ import Repository from "../Repository";
import ConferenceModel from "../database/conference/conferences.model";
import AnonymousError from "../AnonymousError";
import { downloadQueue, removeQueue } from "../queue";
import RepositoryModel from "../database/repositories/repositories.model";
const router = express.Router();
@@ -50,7 +51,18 @@ router.post("/claim", async (req: express.Request, res: express.Response) => {
repo: r.name,
accessToken: user.accessToken,
});
if ((repoConfig.source as GitHubBase).githubRepository.id != repo.id) {
if (!repo) {
throw new AnonymousError("repo_not_found", {
object: req.body,
httpStatus: 404,
});
}
const dbRepo = await RepositoryModel.findById(
(repoConfig.source as GitHubBase).githubRepository.id
);
if (!dbRepo || dbRepo.externalId != repo.id) {
throw new AnonymousError("repo_not_found", {
object: req.body,
httpStatus: 404,
@@ -78,7 +90,12 @@ router.post(
const repo = await getRepo(req, res, { nocheck: true });
if (!repo) return;
if (repo.status == "preparing" || repo.status == "removing") return;
if (
repo.status == "preparing" ||
repo.status == "removing" ||
repo.status == "expiring"
)
return;
const user = await getUser(req);
isOwnerOrAdmin([repo.owner.id], user);

View File

@@ -87,8 +87,8 @@ router.get(
fiveMinuteAgo.setMinutes(fiveMinuteAgo.getMinutes() - 5);
if (repo.status != "ready") {
if (
repo.model.statusDate < fiveMinuteAgo &&
repo.status != "preparing"
repo.model.statusDate < fiveMinuteAgo
// && repo.status != "preparing"
) {
await repo.updateStatus("preparing");
await downloadQueue.add(repo, { jobId: repo.repoId });