فهرست منبع

RIFFMASTER: add pdf generation authorized with token

Kuba 2 سال پیش
والد
کامیت
0bac62d14a
25فایلهای تغییر یافته به همراه32 افزوده شده و 12 حذف شده
  1. 1 1
      Backend/Spring/.idea/workspace.xml
  2. 17 2
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/security/CustomInterceptor.java
  3. BIN
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class
  4. BIN
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class
  5. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack
  6. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack
  7. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack
  8. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/17.pack
  9. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack
  10. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack
  11. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack
  12. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old
  13. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/048a2e1d11a2fae040a10988a1cd4e341af461ead11e40ec632e8bba24310225.json
  14. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/0be12b8bbabbe8d66a5516bf83d97f201c817e2f9fce76093931b3106811dc25.json
  15. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/0c32271d9d8da984b18cc170397cc904c7f998861026fa9f91cbe5f42a76d216.json
  16. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/22424bfddf0d228002ce6a2dca94d84738b14ff520547df1c2109658a5d9a422.json
  17. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3e6f00d416a8c724c1f173ccb53e0d84f4cd02cb999a1ee942407a4ecdcfdddc.json
  18. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/51a4a3c124dd62fa766153e5b1e16817dd20eb974aebbf5b5ddb9a2d3ad412b1.json
  19. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5f1e79c25aa0a31f7b7e13c8152b9104a15644c971a821d58a692bedb019b2fc.json
  20. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/9ee50eb1c4b39e3564b2c0c060e2c7e8119d8d6f2f2d513f40a4212f10e2ca62.json
  21. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a2ead397af031de2856114814c1d78055e565d2dcb7dd79b79eff34f2605867c.json
  22. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ad37778ec267ed810e457522d7d4272589f79ece1acdf968cd2aae8c196bd979.json
  23. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/dbd8396ec6dd493fc9efcb1defaeee35cad3c00ab7b89fb175e4b3a625ccc2dd.json
  24. 2 4
      Frontend/RiffMasterFront/.idea/workspace.xml
  25. 12 5
      Frontend/RiffMasterFront/src/app/Services/song.service.ts

+ 1 - 1
Backend/Spring/.idea/workspace.xml

@@ -222,7 +222,7 @@
       <workItem from="1687011079341" duration="18876000" />
       <workItem from="1687039482556" duration="614000" />
       <workItem from="1687040353033" duration="220000" />
-      <workItem from="1687069497459" duration="15660000" />
+      <workItem from="1687069497459" duration="18536000" />
     </task>
     <task id="LOCAL-00001" summary="add basic hello world and transfering data to server">
       <created>1679575346987</created>

+ 17 - 2
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/security/CustomInterceptor.java

@@ -36,6 +36,9 @@ public class CustomInterceptor implements HandlerInterceptor {
         userRoles.put("DELETE", Set.of("ROLE_ADMIN"));
         endpointRoles.put("/users", userRoles);
 
+        Map<String, Set<String>> pdfRoles = new HashMap<>();
+        pdfRoles.put("GET", Set.of("ROLE_USER", "ROLE_MODERATOR", "ROLE_ADMIN"));
+        endpointRoles.put("/pdf", pdfRoles);
 
     }
 
@@ -98,6 +101,7 @@ public class CustomInterceptor implements HandlerInterceptor {
                         return HandlerInterceptor.super.preHandle(request, response, handler);
                     }
                     else {
+                        System.out.println("nie udało sie zautoryzować xddd");
                         response.setStatus(HttpStatus.FORBIDDEN.value());
                         response.getWriter().write("Unauthorized access");
                         return false;
@@ -129,15 +133,24 @@ public class CustomInterceptor implements HandlerInterceptor {
     }
 
     private boolean isAuthorized(String endpoint, String method, Set<String> roles) {
+        // Remove the variable part from the endpoint
+        String mainEndpoint = endpoint.split("/\\d+")[0];
+
         System.out.println("Authorization in isAuthorized() method");
-        System.out.println("    endpoint: " + endpoint);
+        System.out.println("    endpoint: " + mainEndpoint);
         System.out.println("    method: " + method);
         System.out.println("    roles: " + roles);
 
 
-        Map<String, Set<String>> methodRoles = endpointRoles.get(endpoint);
+        Map<String, Set<String>> methodRoles = endpointRoles.get(mainEndpoint);
+
+        System.out.println("methodRoles " + methodRoles);
+
         if (methodRoles != null) {
             Set<String> requiredRoles = methodRoles.get(method);
+
+            System.out.println("requiredRoles " + requiredRoles);
+
             if (requiredRoles != null) {
                 return !Collections.disjoint(roles, requiredRoles);
             }
@@ -145,6 +158,8 @@ public class CustomInterceptor implements HandlerInterceptor {
         return false;
     }
 
+
+
     @Override
     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
         HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);

BIN
Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class


BIN
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/17.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/048a2e1d11a2fae040a10988a1cd4e341af461ead11e40ec632e8bba24310225.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/0be12b8bbabbe8d66a5516bf83d97f201c817e2f9fce76093931b3106811dc25.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/0c32271d9d8da984b18cc170397cc904c7f998861026fa9f91cbe5f42a76d216.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/22424bfddf0d228002ce6a2dca94d84738b14ff520547df1c2109658a5d9a422.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3e6f00d416a8c724c1f173ccb53e0d84f4cd02cb999a1ee942407a4ecdcfdddc.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/51a4a3c124dd62fa766153e5b1e16817dd20eb974aebbf5b5ddb9a2d3ad412b1.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5f1e79c25aa0a31f7b7e13c8152b9104a15644c971a821d58a692bedb019b2fc.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/9ee50eb1c4b39e3564b2c0c060e2c7e8119d8d6f2f2d513f40a4212f10e2ca62.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a2ead397af031de2856114814c1d78055e565d2dcb7dd79b79eff34f2605867c.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ad37778ec267ed810e457522d7d4272589f79ece1acdf968cd2aae8c196bd979.json


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/dbd8396ec6dd493fc9efcb1defaeee35cad3c00ab7b89fb175e4b3a625ccc2dd.json


+ 2 - 4
Frontend/RiffMasterFront/.idea/workspace.xml

@@ -6,9 +6,7 @@
   <component name="ChangeListManager">
     <list default="true" id="d91bc08d-d968-4797-8fb3-ef602a37db2a" name="Changes" comment="RIFFMASTER: add frontend business logic (riff, song)">
       <change beforePath="$PROJECT_DIR$/../../Backend/Spring/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/SpringConfiguration.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/SpringConfiguration.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/security/JwtTokenUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/security/JwtTokenUtil.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/security/CustomInterceptor.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/security/CustomInterceptor.java" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -115,7 +113,7 @@
       <workItem from="1687011087000" duration="9476000" />
       <workItem from="1687039479377" duration="859000" />
       <workItem from="1687040351475" duration="221000" />
-      <workItem from="1687069506147" duration="9763000" />
+      <workItem from="1687069506147" duration="11478000" />
     </task>
     <task id="LOCAL-00001" summary="RIFFMASTER: add frontend project">
       <created>1685976235580</created>

+ 12 - 5
Frontend/RiffMasterFront/src/app/Services/song.service.ts

@@ -4,7 +4,7 @@ import { Observable } from 'rxjs';
 import { Song } from '../models/song';
 import { parseString } from 'xml2js';
 import { Riff } from '../models/riff';
-
+import { map } from 'rxjs/operators';
 @Injectable({
   providedIn: 'root'
 })
@@ -23,9 +23,9 @@ export class SongService {
 
 
   uploadSong(song: Song): Observable<Song> {
-    const headers = new HttpHeaders({
-      'Content-Type': 'application/json'
-    });
+    const headers = new HttpHeaders()
+      .set('Content-Type', 'application/json')
+      .set('Authorization', sessionStorage.getItem("jwtToken")!);
 
     return this.http.post<Song>(this.apiUrl, song, { headers });
   }
@@ -116,9 +116,16 @@ export class SongService {
 
 
   generatePdf(songId: number): Observable<Blob> {
-    return this.http.get(`${this.pdfUrl}/${songId}`, { responseType: 'blob' });
+    const headers = new HttpHeaders()
+      .set('Content-Type', 'application/json')
+      .set('Authorization', sessionStorage.getItem("jwtToken")!);
+
+
+
+    return this.http.get(`${this.pdfUrl}/${songId}`, { responseType: 'blob', headers: headers });
   }
 
+
   deleteSong(id: number): Observable<void> {
     const url = `${this.apiUrl}/${id}`;
     return this.http.delete<void>(url);

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است