fix: public routes
This commit is contained in:
committed by
Clément Le Bihan
parent
1d61b1e652
commit
61ebf58631
@@ -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> = {
|
||||
|
||||
@@ -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> = {
|
||||
|
||||
@@ -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" })
|
||||
|
||||
22
back/src/auth/chroma-auth.guard.ts
Normal file
22
back/src/auth/chroma-auth.guard.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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> = {
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user