Sfoglia il codice sorgente

RIFFMASTER: FRONTEND: add list of roles in the userAdminPanel

Kuba 3 anni fa
parent
commit
85e4963f94
88 ha cambiato i file con 263 aggiunte e 15 eliminazioni
  1. 25 1
      Backend/Spring/.idea/workspace.xml
  2. 4 4
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/AppUserRESTController.java
  3. 2 1
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SongController.java
  4. 1 1
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/security/CustomInterceptor.java
  5. BIN
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/AppUserRESTController.class
  6. BIN
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/SongController.class
  7. BIN
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class
  8. BIN
      Backend/Spring/target/classes/classpath.index
  9. BIN
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/AppUserRESTController.class
  10. BIN
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SongController.class
  11. BIN
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class
  12. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/0.pack
  13. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack
  14. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack
  15. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/12.pack
  16. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack
  17. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/15.pack
  18. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/16.pack
  19. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/17.pack
  20. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/18.pack
  21. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/19.pack
  22. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack
  23. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/20.pack
  24. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/4.pack
  25. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack
  26. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack
  27. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack
  28. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.pack
  29. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack
  30. BIN
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old
  31. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/095779c7307889f035cd9df54dd93dac325150bd62fc0adbb5b143ec9beb7c17.json
  32. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/0cb8700790a7edf734858a0bb5fc8182d089f85b5a11c4317296f5943e5acdd4.json
  33. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/1a63c67115f70f5e1ad196fe48257f54ca28945d9a87071d5712754c6076b209.json
  34. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/24913486d2803dd1f9a15cfd5b72924baaaad1acbd958e8f17e14a1882bc88a0.json
  35. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/2a4c3d7cfeeae090007cb64ead14ac597b30cc8f8f4f41e8e0efc3c091413b66.json
  36. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/2be05995672e36112018ef7875bd59c754b383d7a980ed184af9ad2ebcc45fba.json
  37. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/334cd14f5b10db4c9bec59cc889bc6f661fe289e5f1aa9012ecd23905a160528.json
  38. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3ade4b3b61231db326ec0249a73f41ee6ac5c15189df77dabad340ad2b167359.json
  39. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3eb4384a60078ec76c8812986a9d445dd24f52030c53c3efe4b7610071fda716.json
  40. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3f0c7e04e77fee4e9f545822eb520cfa18733ac6b0a7f432f80a7a269287971a.json
  41. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/41e504abe38a7bf39a89a5625066d52e5fc70808ad485665653858db6a2bc095.json
  42. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5217cdfffeea31017dd52913ad46f512659c69777ce26922637a779f1fabefd1.json
  43. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/57913b594d52c2df305826f69e2f41c51d16562e959e87338d62052893abbae8.json
  44. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5af4df5833933f95fde670cf1a270312225ede95e19b71344d19ed33a5bcbda3.json
  45. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5b13ba73fbddb660e89575344336771c627f1d431830de04dc2b9018068aa39f.json
  46. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5de0b21e741d9c9eabbea2a42773c3342bb2c826a7d2f724b24f3321eeaf1a02.json
  47. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/6e0737e8a565b967324ca1a2197c76e123a1e8f33217de2e7c237fe73a488064.json
  48. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/73a84cebc6d9d246da4d37fb82d8dbf6a751fddf58ce6ffd1e44c13deef1c321.json
  49. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/740fdc514cf96a8a1a3eed786475bddc77f5d08afb2d4828d5cdc32ac7ca32b0.json
  50. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/79f106dca21d39be94397d2366cec7dc32fbd14739f38719a8ee9cd70491383d.json
  51. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/7a56ded92ea6230021d6c527d812a139beca0bf426b74c6c2ab02d94328c7660.json
  52. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/83f602b0dc65061299d363868eb9825fe06876f2a8767570835576740d3b461d.json
  53. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/847cea540618d22c0af4369e89df4bcc79deeafe48df925cfa34f90f14dbdeb3.json
  54. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/996364b92a8b5ad12675345b4f5689deca12b35a79161decc6a33f1890a65835.json
  55. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/9a93c20d14c12a32f9a8b5f87ea90b2c28a6fd295124fe5b3bee60c55d46c2d7.json
  56. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/9af01e3233cee4e16996aa542cf85b6302bd7430e9c44d94f5bd0bbc9be25375.json
  57. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a14cd3fce6822d292a94315dc3635e2745e8da5b96fd92d1ccde0909701ce792.json
  58. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a482e1318d5513bcdf48578f4bde683b9664d9529c09bcf884061a992886b164.json
  59. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a4cfd22288c798b969065969a38510c5b8b251e1821d8fdbb190d9c558595793.json
  60. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a7322dbc62b19e5258ebc23f8811425b8a6188e70e6c2030ea1dac0467d482d9.json
  61. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ad04c25015e02231ae3f1def2e1664a8c1942a9dbe20cdee1131699933a9070b.json
  62. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/addc1950b86ca994198414825f9afef3cec74f9973afec072f731deb2965e6f8.json
  63. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/aebb2f15bf555756bb3ab60788a941d6f0200a5d66e4088ed790c420d8a9175f.json
  64. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b0a24dac08063bb7348d926b395da07fb420fa1e3fbdf5b04bd5df35ff4643db.json
  65. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b472cb7bfa983587dc6d9ef9afba8d7d6d6dc59b0124fe120fbd94b5627685cf.json
  66. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b5faa90f88e8879454443b72e5f9fefa7468c89ea6617368df0cc4beeeec3f57.json
  67. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/bb91f200d955846c95bf4f9fceccf6e8e3ec890cabf9a051d31ff8f80b260cfe.json
  68. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/bc3320af1d11dd3ec127ce659238481b350591b053a628876c62f52cd3c35117.json
  69. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/bd330075956c9d2577631cfafe2276ba281baf89780c942898453f1558886451.json
  70. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/bd39c71769332403fc4d7e7cab180ec3075723ca25a5824e1d89e51fe75c2a9c.json
  71. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/be2f23e018b15e59e49903949a09884f312ab74125bf5f6f49c500def8736512.json
  72. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/c9cf4f8456cb0ff303e6ad123ba820319ae97feb9706b78f392af53f0a44d21e.json
  73. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d1f52b8aca0af56716b11734cb4f31d3ab006cd719862ee24444809bcf656ec5.json
  74. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ef8df60d4013c3f01670e4340a50e41b11197f38dafeff518d168e44d9858ff6.json
  75. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f1b15ba7e09cd1829cb3f43d2ccfbda5ad17038d3e57ee5f609c3034ea43253b.json
  76. 1 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f22cc7d4cb8cebe223f915d1912a86cbbacf2a6d64ee46604a8e2905553ef50b.json
  77. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f4aedd8e998c464892a6f616e5a587d96903ce80f990b616394fde39c61886ae.json
  78. 13 3
      Frontend/RiffMasterFront/.idea/workspace.xml
  79. 10 0
      Frontend/RiffMasterFront/src/app/Services/auth-guard.service.ts
  80. 31 0
      Frontend/RiffMasterFront/src/app/Services/user.service.ts
  81. 4 2
      Frontend/RiffMasterFront/src/app/app-routing.module.ts
  82. 1 0
      Frontend/RiffMasterFront/src/app/app.component.html
  83. 6 3
      Frontend/RiffMasterFront/src/app/app.module.ts
  84. 10 0
      Frontend/RiffMasterFront/src/app/models/role.ts
  85. 21 0
      Frontend/RiffMasterFront/src/app/models/user.ts
  86. 0 0
      Frontend/RiffMasterFront/src/app/users-page/users-page.component.css
  87. 73 0
      Frontend/RiffMasterFront/src/app/users-page/users-page.component.html
  88. 61 0
      Frontend/RiffMasterFront/src/app/users-page/users-page.component.ts

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

@@ -10,7 +10,28 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="8315de53-8c15-472c-a710-45938463dc02" name="Changes" comment="RIFFMASTER: add frontend files">
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/0.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/0.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/12.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/12.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/13.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/15.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/15.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/16.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/16.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/17.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/17.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/18.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/18.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/4.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/4.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/Services/auth-guard.service.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/Services/auth-guard.service.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app-routing.module.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app-routing.module.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app.component.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app.module.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app.module.ts" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -222,7 +243,10 @@
       <workItem from="1687039482556" duration="614000" />
       <workItem from="1687040353033" duration="220000" />
       <workItem from="1687069497459" duration="19142000" />
-      <workItem from="1687166331886" duration="8183000" />
+      <workItem from="1687166331886" duration="8791000" />
+      <workItem from="1687186879600" duration="824000" />
+      <workItem from="1687199254970" duration="3353000" />
+      <workItem from="1687253936070" duration="1751000" />
     </task>
     <task id="LOCAL-00001" summary="add basic hello world and transfering data to server">
       <created>1679575346987</created>

+ 4 - 4
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/AppUserRESTController.java

@@ -46,16 +46,16 @@ public class AppUserRESTController {
     }
     //#################################################################################_DELETE USER
 
-    @RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
-    public ResponseEntity<String> deleteUser(@PathVariable("id") Long userId) {
+    @DeleteMapping("/users/{id}")
+    public ResponseEntity<Void> deleteUser(@PathVariable("id") Long userId) {
         // Check if the user exists
         if (userService.getAppUser(userId) == null) {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).body("User not found");
+            return ResponseEntity.notFound().build();
         }
 
         // Delete the user
         userService.removeAppUser(userId);
-        return ResponseEntity.ok("User deleted successfully");
+        return ResponseEntity.noContent().build();
     }
 
 

+ 2 - 1
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SongController.java

@@ -99,7 +99,8 @@ public class SongController {
         if (song.isPresent()) {
             songService.removeSong(id);
             return ResponseEntity.noContent().build();
-        } else {
+        }
+        else {
             return ResponseEntity.notFound().build();
         }
     }

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

@@ -100,7 +100,7 @@ public class CustomInterceptor implements HandlerInterceptor {
                     //-------------------------------------------------------check user authority
 
                     if (isAuthorized(endpoint, method, userRoles)) {
-                        System.out.println("preauthorizing reuqst");
+                        System.out.println("\n      authorized successfully! - redirecting to the endpoint");
                         return HandlerInterceptor.super.preHandle(request, response, handler);
                     }
                     else {

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


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


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


BIN
Backend/Spring/target/classes/classpath.index


BIN
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/AppUserRESTController.class


BIN
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SongController.class


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


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


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/12.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/15.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/16.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/18.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/19.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/20.pack


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


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.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/8.pack


BIN
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.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


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/095779c7307889f035cd9df54dd93dac325150bd62fc0adbb5b143ec9beb7c17.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/0cb8700790a7edf734858a0bb5fc8182d089f85b5a11c4317296f5943e5acdd4.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/1a63c67115f70f5e1ad196fe48257f54ca28945d9a87071d5712754c6076b209.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/24913486d2803dd1f9a15cfd5b72924baaaad1acbd958e8f17e14a1882bc88a0.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/2a4c3d7cfeeae090007cb64ead14ac597b30cc8f8f4f41e8e0efc3c091413b66.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/2be05995672e36112018ef7875bd59c754b383d7a980ed184af9ad2ebcc45fba.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/334cd14f5b10db4c9bec59cc889bc6f661fe289e5f1aa9012ecd23905a160528.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3ade4b3b61231db326ec0249a73f41ee6ac5c15189df77dabad340ad2b167359.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3eb4384a60078ec76c8812986a9d445dd24f52030c53c3efe4b7610071fda716.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/3f0c7e04e77fee4e9f545822eb520cfa18733ac6b0a7f432f80a7a269287971a.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/41e504abe38a7bf39a89a5625066d52e5fc70808ad485665653858db6a2bc095.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5217cdfffeea31017dd52913ad46f512659c69777ce26922637a779f1fabefd1.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/57913b594d52c2df305826f69e2f41c51d16562e959e87338d62052893abbae8.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5af4df5833933f95fde670cf1a270312225ede95e19b71344d19ed33a5bcbda3.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5b13ba73fbddb660e89575344336771c627f1d431830de04dc2b9018068aa39f.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5de0b21e741d9c9eabbea2a42773c3342bb2c826a7d2f724b24f3321eeaf1a02.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/6e0737e8a565b967324ca1a2197c76e123a1e8f33217de2e7c237fe73a488064.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/73a84cebc6d9d246da4d37fb82d8dbf6a751fddf58ce6ffd1e44c13deef1c321.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/740fdc514cf96a8a1a3eed786475bddc77f5d08afb2d4828d5cdc32ac7ca32b0.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/79f106dca21d39be94397d2366cec7dc32fbd14739f38719a8ee9cd70491383d.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/7a56ded92ea6230021d6c527d812a139beca0bf426b74c6c2ab02d94328c7660.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/83f602b0dc65061299d363868eb9825fe06876f2a8767570835576740d3b461d.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/847cea540618d22c0af4369e89df4bcc79deeafe48df925cfa34f90f14dbdeb3.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/996364b92a8b5ad12675345b4f5689deca12b35a79161decc6a33f1890a65835.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/9a93c20d14c12a32f9a8b5f87ea90b2c28a6fd295124fe5b3bee60c55d46c2d7.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/9af01e3233cee4e16996aa542cf85b6302bd7430e9c44d94f5bd0bbc9be25375.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a14cd3fce6822d292a94315dc3635e2745e8da5b96fd92d1ccde0909701ce792.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a482e1318d5513bcdf48578f4bde683b9664d9529c09bcf884061a992886b164.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a4cfd22288c798b969065969a38510c5b8b251e1821d8fdbb190d9c558595793.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/a7322dbc62b19e5258ebc23f8811425b8a6188e70e6c2030ea1dac0467d482d9.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ad04c25015e02231ae3f1def2e1664a8c1942a9dbe20cdee1131699933a9070b.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/addc1950b86ca994198414825f9afef3cec74f9973afec072f731deb2965e6f8.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/aebb2f15bf555756bb3ab60788a941d6f0200a5d66e4088ed790c420d8a9175f.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b0a24dac08063bb7348d926b395da07fb420fa1e3fbdf5b04bd5df35ff4643db.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b472cb7bfa983587dc6d9ef9afba8d7d6d6dc59b0124fe120fbd94b5627685cf.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/b5faa90f88e8879454443b72e5f9fefa7468c89ea6617368df0cc4beeeec3f57.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/bb91f200d955846c95bf4f9fceccf6e8e3ec890cabf9a051d31ff8f80b260cfe.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/bc3320af1d11dd3ec127ce659238481b350591b053a628876c62f52cd3c35117.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/bd330075956c9d2577631cfafe2276ba281baf89780c942898453f1558886451.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/bd39c71769332403fc4d7e7cab180ec3075723ca25a5824e1d89e51fe75c2a9c.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/be2f23e018b15e59e49903949a09884f312ab74125bf5f6f49c500def8736512.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/c9cf4f8456cb0ff303e6ad123ba820319ae97feb9706b78f392af53f0a44d21e.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/d1f52b8aca0af56716b11734cb4f31d3ab006cd719862ee24444809bcf656ec5.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/ef8df60d4013c3f01670e4340a50e41b11197f38dafeff518d168e44d9858ff6.json


File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f1b15ba7e09cd1829cb3f43d2ccfbda5ad17038d3e57ee5f609c3034ea43253b.json


+ 1 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f22cc7d4cb8cebe223f915d1912a86cbbacf2a6d64ee46604a8e2905553ef50b.json

@@ -0,0 +1 @@
+{"ast":null,"code":"import * as i0 from \"@angular/core\";\nclass UsersPageComponent {}\nUsersPageComponent.ɵfac = function UsersPageComponent_Factory(t) {\n  return new (t || UsersPageComponent)();\n};\nUsersPageComponent.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n  type: UsersPageComponent,\n  selectors: [[\"app-users-page\"]],\n  decls: 2,\n  vars: 0,\n  template: function UsersPageComponent_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"p\");\n      i0.ɵɵtext(1, \"users-page works!\");\n      i0.ɵɵelementEnd();\n    }\n  },\n  styles: [\"\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiIifQ== */\"]\n});\nexport { UsersPageComponent };","map":{"version":3,"names":["UsersPageComponent","selectors","decls","vars","template","UsersPageComponent_Template","rf","ctx","i0","ɵɵelementStart","ɵɵtext","ɵɵelementEnd"],"sources":["C:\\Users\\Kuba\\Desktop\\studia\\WPFt\\RiffMaster web application\\Frontend\\RiffMasterFront\\src\\app\\users-page\\users-page.component.ts","C:\\Users\\Kuba\\Desktop\\studia\\WPFt\\RiffMaster web application\\Frontend\\RiffMasterFront\\src\\app\\users-page\\users-page.component.html"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-users-page',\n  templateUrl: './users-page.component.html',\n  styleUrls: ['./users-page.component.css']\n})\nexport class UsersPageComponent {\n\n}\n","<p>users-page works!</p>\n"],"mappings":";AAEA,MAKaA,kBAAkB;AAAlBA,kBAAkB,C;mBAAlBA,kBAAkB;AAAA;AAAlBA,kBAAkB,C;QAAlBA,kBAAkB;EAAAC,SAAA;EAAAC,KAAA;EAAAC,IAAA;EAAAC,QAAA,WAAAC,4BAAAC,EAAA,EAAAC,GAAA;IAAA,IAAAD,EAAA;MCP/BE,EAAA,CAAAC,cAAA,QAAG;MAAAD,EAAA,CAAAE,MAAA,wBAAiB;MAAAF,EAAA,CAAAG,YAAA,EAAI;;;;;SDOXX,kBAAkB"},"metadata":{},"sourceType":"module","externalDependencies":[]}

File diff suppressed because it is too large
+ 0 - 0
Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/f4aedd8e998c464892a6f616e5a587d96903ce80f990b616394fde39c61886ae.json


+ 13 - 3
Frontend/RiffMasterFront/.idea/workspace.xml

@@ -6,9 +6,15 @@
   <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/controller/AppUserRESTController.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/AppUserRESTController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SongController.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SongController.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" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/AppUserRESTController.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/AppUserRESTController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/SongController.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/SongController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/AppUserRESTController.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/AppUserRESTController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SongController.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SongController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/security/CustomInterceptor.class" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -42,7 +48,7 @@
     &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
     &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
     &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;last_opened_file_path&quot;: &quot;C:/Users/Kuba/Desktop/studia/WPFt/RiffMaster web application/Frontend/RiffMasterFront/src/app&quot;,
+    &quot;last_opened_file_path&quot;: &quot;C:/Users/Kuba/Desktop/studia/WPFt/RiffMaster web application/Frontend/RiffMasterFront/src/app/models&quot;,
     &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
     &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
     &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
@@ -56,6 +62,7 @@
 }</component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="C:\Users\Kuba\Desktop\studia\WPFt\RiffMaster web application\Frontend\RiffMasterFront\src\app\models" />
       <recent name="C:\Users\Kuba\Desktop\studia\WPFt\RiffMaster web application\Frontend\RiffMasterFront\src\app" />
       <recent name="C:\Users\Quba\Desktop\studia\WPFt\RiffMasterFront\src\app\main" />
     </key>
@@ -116,7 +123,10 @@
       <workItem from="1687039479377" duration="859000" />
       <workItem from="1687040351475" duration="221000" />
       <workItem from="1687069506147" duration="12962000" />
-      <workItem from="1687166414054" duration="6013000" />
+      <workItem from="1687166414054" duration="7288000" />
+      <workItem from="1687186876524" duration="822000" />
+      <workItem from="1687199275652" duration="4286000" />
+      <workItem from="1687253957427" duration="2407000" />
     </task>
     <task id="LOCAL-00001" summary="RIFFMASTER: add frontend project">
       <created>1685976235580</created>

+ 10 - 0
Frontend/RiffMasterFront/src/app/Services/auth-guard.service.ts

@@ -44,3 +44,13 @@ export class RemoveSongButtonGuard implements CanActivate {
     return userRoles.includes('ROLE_MODERATOR') || userRoles.includes('ROLE_ADMIN');
   }
 }
+
+@Injectable({ providedIn: 'root' })
+export class UsersPageAuthGuard implements CanActivate {
+  constructor(private authService: AuthService) {}
+
+  canActivate(): boolean {
+    const userRoles = this.authService.getUserRoles();
+    return userRoles.includes('ROLE_ADMIN');
+  }
+}

+ 31 - 0
Frontend/RiffMasterFront/src/app/Services/user.service.ts

@@ -0,0 +1,31 @@
+import { Injectable } from '@angular/core';
+import { HttpClient, HttpHeaders } from '@angular/common/http';
+import { Observable } from 'rxjs';
+import { User } from '../models/user';
+
+
+@Injectable({
+  providedIn: 'root'
+})
+export class UserService {
+  private apiUrl= 'http://localhost:8080';
+
+  constructor(private http: HttpClient) { }
+
+  getAllUsers(): Observable<User[]> {
+    const headers = this.getHeaders();
+    return this.http.get<User[]>(`${this.apiUrl}/users`, { headers });
+  }
+
+  deleteUser(userId: number): Observable<void> {
+    const headers = this.getHeaders();
+    return this.http.delete<void>(`${this.apiUrl}/users/${userId}`, { headers });
+  }
+
+  private getHeaders(): HttpHeaders {
+    const jwtToken = sessionStorage.getItem('jwtToken') || '';
+    return new HttpHeaders()
+      .set('Content-Type', 'application/json')
+      .set('Authorization', jwtToken);
+  }
+}

+ 4 - 2
Frontend/RiffMasterFront/src/app/app-routing.module.ts

@@ -3,14 +3,16 @@ import { RouterModule, Routes } from '@angular/router';
 import {LoginPageComponent} from "./login-page/login-page.component";
 import {MainPageComponent} from "./main-page/main-page.component";
 import {RegisterPageComponent} from "./register-page/register-page.component";
-import { MainAuthGuard, LoginAuthGuard, RemoveSongButtonGuard} from 'src/app/Services/auth-guard.service';
+import { MainAuthGuard, LoginAuthGuard, RemoveSongButtonGuard, UsersPageAuthGuard} from 'src/app/Services/auth-guard.service';
 import { RemoveSongButtonComponent } from './remove-song-button/remove-song-button.component';
-
+import { UsersPageComponent } from './users-page/users-page.component';
 
 const routes: Routes = [
   { path: 'login', component: LoginPageComponent, canActivate: [LoginAuthGuard] },
   { path: 'register', component: RegisterPageComponent, canActivate: [LoginAuthGuard] },
   { path: 'main', component: MainPageComponent, canActivate: [MainAuthGuard] },
+  { path: 'users', component: UsersPageComponent, canActivate: [UsersPageAuthGuard] },
+
   { path: 'remove-song', component: RemoveSongButtonComponent, canActivate: [RemoveSongButtonGuard] },
   { path: '', redirectTo: '/login', pathMatch: 'full' },
   { path: '**', redirectTo: '/login', pathMatch: 'full' }

+ 1 - 0
Frontend/RiffMasterFront/src/app/app.component.html

@@ -7,6 +7,7 @@
 
   <div>
     <a mat-button [routerLink]="'/main'" class="riffmaster-home-button">RiffMaster</a>
+    <a mat-button *ngIf="isLoggedIn()" [routerLink]="'/users'">Users</a>
     <a mat-button *ngIf="!isLoggedIn()" [routerLink]="'/login'">Login</a>
     <a mat-button *ngIf="!isLoggedIn()" [routerLink]="'/register'">Sign up</a>
     <a mat-button *ngIf="isLoggedIn()" (click)="logout()">Logout</a>

+ 6 - 3
Frontend/RiffMasterFront/src/app/app.module.ts

@@ -26,8 +26,9 @@ import { MatRadioChange } from '@angular/material/radio';
 
 import { MatTableModule } from '@angular/material/table';
 
-import { MainAuthGuard, LoginAuthGuard, RemoveSongButtonGuard} from 'src/app/Services/auth-guard.service';
+import { MainAuthGuard, LoginAuthGuard, RemoveSongButtonGuard, UsersPageAuthGuard} from 'src/app/Services/auth-guard.service';
 import { RemoveSongButtonComponent } from './remove-song-button/remove-song-button.component';
+import { UsersPageComponent } from './users-page/users-page.component';
 
 
 
@@ -38,7 +39,8 @@ import { RemoveSongButtonComponent } from './remove-song-button/remove-song-butt
     LoginPageComponent,
     MainPageComponent,
     RegisterPageComponent,
-    RemoveSongButtonComponent
+    RemoveSongButtonComponent,
+    UsersPageComponent
   ],
   imports: [
     BrowserModule,
@@ -64,7 +66,8 @@ import { RemoveSongButtonComponent } from './remove-song-button/remove-song-butt
     DatePipe,
     MainAuthGuard,
     LoginAuthGuard,
-    RemoveSongButtonGuard
+    RemoveSongButtonGuard,
+    UsersPageAuthGuard
   ],
   bootstrap: [AppComponent]
 })

+ 10 - 0
Frontend/RiffMasterFront/src/app/models/role.ts

@@ -0,0 +1,10 @@
+export class Role {
+  id: number;
+  roleName: string;
+
+
+  constructor(id: number, roleName: string) {
+    this.id = id;
+    this.roleName = roleName;
+  }
+}

+ 21 - 0
Frontend/RiffMasterFront/src/app/models/user.ts

@@ -0,0 +1,21 @@
+import { Role } from "./role";
+
+export class User {
+  id: number;
+  email: string;
+  enabled: number;
+  firstName: number;
+  lastName: string;
+  login: string;
+  appUserRole: Role[];
+
+  constructor(id: number, email: string, enabled: number, firstName: number, lastName: string, login: string, appUserRole: Role[]) {
+    this.id = id;
+    this.email = email;
+    this.enabled = enabled;
+    this.firstName = firstName;
+    this.lastName = lastName;
+    this.login = login;
+    this.appUserRole = appUserRole;
+  }
+}

+ 0 - 0
Frontend/RiffMasterFront/src/app/users-page/users-page.component.css


+ 73 - 0
Frontend/RiffMasterFront/src/app/users-page/users-page.component.html

@@ -0,0 +1,73 @@
+<mat-card class="user-list-card">
+  <mat-card-header>
+    <mat-card-title class="card-title">User List</mat-card-title>
+  </mat-card-header>
+  <mat-card-content>
+    <mat-form-field appearance="fill">
+      <mat-label>Search users</mat-label>
+      <input matInput type="text" placeholder="Search users" [(ngModel)]="searchQuery">
+    </mat-form-field>
+    <table mat-table [dataSource]="users">
+      <!-- ID Column -->
+      <ng-container matColumnDef="id">
+        <th mat-header-cell *matHeaderCellDef>ID</th>
+        <td mat-cell *matCellDef="let user">{{ user.id }}</td>
+      </ng-container>
+
+      <!-- Email Column -->
+      <ng-container matColumnDef="email">
+        <th mat-header-cell *matHeaderCellDef>Email</th>
+        <td mat-cell *matCellDef="let user">{{ user.email }}</td>
+      </ng-container>
+
+      <!-- Enabled Column -->
+      <ng-container matColumnDef="enabled">
+        <th mat-header-cell *matHeaderCellDef>Enabled</th>
+        <td mat-cell *matCellDef="let user">{{ user.enabled }}</td>
+      </ng-container>
+
+      <!-- First Name Column -->
+      <ng-container matColumnDef="firstName">
+        <th mat-header-cell *matHeaderCellDef>First Name</th>
+        <td mat-cell *matCellDef="let user">{{ user.firstName }}</td>
+      </ng-container>
+
+      <!-- Last Name Column -->
+      <ng-container matColumnDef="lastName">
+        <th mat-header-cell *matHeaderCellDef>Last Name</th>
+        <td mat-cell *matCellDef="let user">{{ user.lastName }}</td>
+      </ng-container>
+
+      <!-- Login Column -->
+      <ng-container matColumnDef="login">
+        <th mat-header-cell *matHeaderCellDef>Login</th>
+        <td mat-cell *matCellDef="let user">{{ user.login }}</td>
+      </ng-container>
+
+      <!-- Roles Column -->
+      <ng-container matColumnDef="roles">
+        <th mat-header-cell *matHeaderCellDef>Roles</th>
+        <td mat-cell *matCellDef="let user">
+          <ng-container *ngIf="user.appUserRole && user.appUserRole.length > 0">
+            <span *ngFor="let role of user.appUserRole">{{ role.roleName }} </span>
+          </ng-container>
+        </td>
+      </ng-container>
+
+
+      <!-- Actions Column -->
+      <ng-container matColumnDef="actions">
+        <th mat-header-cell *matHeaderCellDef>Actions</th>
+        <td mat-cell *matCellDef="let user">
+          <button mat-icon-button color="warn" (click)="deleteUser(user)">
+            <mat-icon>delete</mat-icon>
+          </button>
+        </td>
+      </ng-container>
+
+      <!-- Table Rows -->
+      <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
+      <tr mat-row *matRowDef="let user; columns: displayedColumns"></tr>
+    </table>
+  </mat-card-content>
+</mat-card>

+ 61 - 0
Frontend/RiffMasterFront/src/app/users-page/users-page.component.ts

@@ -0,0 +1,61 @@
+import { Component } from '@angular/core';
+import { User } from '../models/user';
+import { UserService } from '../Services/user.service';
+
+@Component({
+  selector: 'app-users-page',
+  templateUrl: './users-page.component.html',
+  styleUrls: ['./users-page.component.css']
+})
+export class UsersPageComponent {
+  users: User[] = [];
+  searchQuery: string = '';
+  displayedColumns: string[] = ['id', 'email', 'enabled', 'firstName', 'lastName', 'login', 'roles', 'actions'];
+
+
+
+  constructor(private userService: UserService) {}
+
+  ngOnInit() {
+    this.getAllUsers();
+  }
+
+  getAllUsers() {
+    this.userService.getAllUsers().subscribe(
+      (users: User[]) => {
+        this.users = users;
+      },
+      (error) => {
+        console.error('Error retrieving users:', error);
+      }
+    );
+  }
+
+  deleteUser(user: User) {
+    if (!confirm(`Are you sure you want to delete the user '${user.login}'?`)) {
+      return;
+    }
+    console.log('user.id = ' + user.id)
+    this.userService.deleteUser(user.id).subscribe(
+      () => {
+        this.getAllUsers();
+      },
+      (error) => {
+        console.error('Error deleting user:', error);
+      }
+    );
+  }
+
+  displayUserInfo(user: User | null): void {
+    if (user) {
+      // Handle displaying user information
+    } else {
+      // Handle the case when no user is selected
+    }
+  }
+  // filterUsers() {
+  //   this.filteredUsers = this.users.filter(user =>
+  //     user.login.toLowerCase().includes(this.searchQuery.toLowerCase())
+  //   );
+  // }
+}

Some files were not shown because too many files changed in this diff