fix: public routes

This commit is contained in:
GitBluub
2023-12-04 18:11:09 +01:00
committed by Clément Le Bihan
parent 1d61b1e652
commit 61ebf58631
7 changed files with 36 additions and 8 deletions

View File

@@ -23,10 +23,11 @@ import { FilterQuery } from "src/utils/filter.pipe";
import { Album as _Album } from "src/_gen/prisma-class/album";
import { IncludeMap, mapInclude } from "src/utils/include";
import { AuthGuard } from "@nestjs/passport";
import { ChromaAuthGuard } from "src/auth/chroma-auth.guard";
@Controller("album")
@ApiTags("album")
@UseGuards(AuthGuard(["jwt", "api-key"]))
@UseGuards(ChromaAuthGuard)
export class AlbumController {
static filterableFields: string[] = ["+id", "name", "+artistId"];
static includableFields: IncludeMap<Prisma.AlbumInclude> = {

View File

@@ -32,10 +32,11 @@ import { Artist as _Artist } from "src/_gen/prisma-class/artist";
import { IncludeMap, mapInclude } from "src/utils/include";
import { Public } from "src/auth/public";
import { AuthGuard } from "@nestjs/passport";
import { ChromaAuthGuard } from "src/auth/chroma-auth.guard";
@Controller("artist")
@ApiTags("artist")
@UseGuards(AuthGuard(["jwt", "api-key"]))
@UseGuards(ChromaAuthGuard)
export class ArtistController {
static filterableFields = ["+id", "name"];
static includableFields: IncludeMap<Prisma.ArtistInclude> = {

View File

@@ -50,6 +50,7 @@ import { writeFile } from "fs";
import { PasswordResetDto } from "./dto/password_reset.dto ";
import { mapInclude } from "src/utils/include";
import { SongController } from "src/song/song.controller";
import { ChromaAuthGuard } from "./chroma-auth.guard";
@ApiTags("auth")
@Controller("auth")
@@ -167,7 +168,7 @@ export class AuthController {
return this.authService.login(user);
}
@UseGuards(AuthGuard(["jwt", "api-key"]))
@UseGuards(ChromaAuthGuard)
@ApiBearerAuth()
@ApiOperation({ description: "Get the profile picture of connected user" })
@ApiOkResponse({ description: "The user profile picture" })
@@ -177,7 +178,7 @@ export class AuthController {
return await this.usersService.getProfilePicture(req.user.id, res);
}
@UseGuards(AuthGuard(["jwt", "api-key"]))
@UseGuards(ChromaAuthGuard)
@ApiBearerAuth()
@ApiOkResponse({ description: "The user profile picture" })
@ApiUnauthorizedResponse({ description: "Invalid token" })
@@ -215,7 +216,7 @@ export class AuthController {
return user;
}
@UseGuards(AuthGuard(["jwt", "api-key"]))
@UseGuards(ChromaAuthGuard)
@ApiBearerAuth()
@ApiOkResponse({ description: "Successfully edited profile", type: User })
@ApiUnauthorizedResponse({ description: "Invalid token" })

View File

@@ -0,0 +1,22 @@
import { ExecutionContext, Injectable } from "@nestjs/common";
import { Reflector } from "@nestjs/core";
import { AuthGuard } from "@nestjs/passport";
import { IS_PUBLIC_KEY } from "./public";
@Injectable()
export class ChromaAuthGuard extends AuthGuard(["jwt", "api-key"]) {
constructor(private reflector: Reflector) {
super();
}
canActivate(context: ExecutionContext) {
const isPublic = this.reflector.getAllAndOverride<boolean>(IS_PUBLIC_KEY, [
context.getHandler(),
context.getClass(),
]);
if (isPublic) {
return true;
}
return super.canActivate(context);
}
}

View File

@@ -27,10 +27,11 @@ import { Genre as _Genre } from "src/_gen/prisma-class/genre";
import { IncludeMap, mapInclude } from "src/utils/include";
import { Public } from "src/auth/public";
import { AuthGuard } from "@nestjs/passport";
import { ChromaAuthGuard } from "src/auth/chroma-auth.guard";
@Controller("genre")
@ApiTags("genre")
@UseGuards(AuthGuard(["jwt", "api-key"]))
@UseGuards(ChromaAuthGuard)
export class GenreController {
static filterableFields: string[] = ["+id", "name"];
static includableFields: IncludeMap<Prisma.GenreInclude> = {

View File

@@ -22,6 +22,7 @@ import { Lesson as _Lesson } from "src/_gen/prisma-class/lesson";
import { IncludeMap, mapInclude } from "src/utils/include";
import { Request } from "express";
import { AuthGuard } from "@nestjs/passport";
import { ChromaAuthGuard } from "src/auth/chroma-auth.guard";
export class Lesson {
@ApiProperty()
@@ -38,7 +39,7 @@ export class Lesson {
@ApiTags("lessons")
@Controller("lesson")
@UseGuards(AuthGuard(["jwt", "api-key"]))
@UseGuards(ChromaAuthGuard)
export class LessonController {
static filterableFields: string[] = [
"+id",

View File

@@ -39,6 +39,7 @@ import { SongHistory } from "src/_gen/prisma-class/song_history";
import { IncludeMap, mapInclude } from "src/utils/include";
import { Public } from "src/auth/public";
import { AuthGuard } from "@nestjs/passport";
import { ChromaAuthGuard } from "src/auth/chroma-auth.guard";
class SongHistoryResult {
@ApiProperty()
best: number;
@@ -48,7 +49,7 @@ class SongHistoryResult {
@Controller("song")
@ApiTags("song")
@UseGuards(AuthGuard(["jwt", "api-key"]))
@UseGuards(ChromaAuthGuard)
export class SongController {
static filterableFields: string[] = [
"+id",