43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { Injectable } from "@nestjs/common";
|
|
import { InjectRepository } from "@nestjs/typeorm";
|
|
import { Token } from "./entities/token.entity";
|
|
import { Repository } from "typeorm";
|
|
import { Project } from "src/project/entities/project.entity";
|
|
|
|
@Injectable()
|
|
export class ApiService {
|
|
constructor(
|
|
@InjectRepository(Token)
|
|
private readonly tokenRepository: Repository<Token>,
|
|
|
|
@InjectRepository(Project)
|
|
private readonly projectRepository: Repository<Project>
|
|
) {}
|
|
|
|
async generateToken(projectToken: string) {
|
|
const project = await this.projectRepository.findOne({
|
|
where: { token: projectToken },
|
|
});
|
|
|
|
if (!project) {
|
|
throw new Error("Project not found");
|
|
}
|
|
|
|
const token = this.tokenRepository.create({ project });
|
|
return this.tokenRepository.save(token);
|
|
}
|
|
|
|
async revokeToken(tokenString: string) {
|
|
const token = await this.tokenRepository.findOne({
|
|
where: { token: tokenString },
|
|
});
|
|
|
|
if (!token) {
|
|
throw new Error("Token not found");
|
|
}
|
|
|
|
token.isActive = false;
|
|
return this.tokenRepository.save(token);
|
|
}
|
|
}
|