瀏覽代碼

RIFFMASTER: fix GET all songs from backend (angular still does not fetch them )

Kuba 2 年之前
父節點
當前提交
6ec741ed27
共有 55 個文件被更改,包括 415 次插入85 次删除
  1. 41 25
      Backend/Spring/.idea/workspace.xml
  2. 0 6
      Backend/Spring/pom.xml
  3. 18 0
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/CorsConfig.java
  4. 65 0
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/AuthController.java
  5. 8 2
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SongController.java
  6. 1 1
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/domain/Song.java
  7. 1 0
      Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/repository/IAppUserRepository.java
  8. 38 0
      Backend/Spring/src/main/webapp/registerPage.jsp
  9. 35 0
      Backend/Spring/src/main/webapp/riffmasterMainPage.jsp
  10. 二進制
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/configuration/CorsConfig.class
  11. 二進制
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/AuthController.class
  12. 二進制
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/SongController.class
  13. 二進制
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/domain/Song.class
  14. 二進制
      Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/repository/IAppUserRepository.class
  15. 38 0
      Backend/Spring/target/Spring-1.0-SNAPSHOT/registerPage.jsp
  16. 35 0
      Backend/Spring/target/Spring-1.0-SNAPSHOT/riffmasterMainPage.jsp
  17. 二進制
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/configuration/CorsConfig.class
  18. 二進制
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/AuthController.class
  19. 二進制
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SongController.class
  20. 二進制
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/domain/Song.class
  21. 二進制
      Backend/Spring/target/classes/pl/dmcs/jwoszczyk/repository/IAppUserRepository.class
  22. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/0.pack
  23. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/1.pack
  24. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack
  25. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack
  26. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/12.pack
  27. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack
  28. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/3.pack
  29. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/4.pack
  30. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack
  31. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/6.pack
  32. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack
  33. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack
  34. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.pack
  35. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack
  36. 二進制
      Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack.old
  37. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/021c2b1bf9b52420ff6c8804170e0661bb01f304d80d1b68c234ad549fbd7178.json
  38. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/134dace0ed2e9fb16afa457b7e933b7d5be824e9d2c0b92b52e127be071633d0.json
  39. 1 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/41ca4bc330a87dc7ba0c63c03231b402e8e97f79f0b5c84fb8938c8a1a7fa200.json
  40. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/566eab27f5fa1367bd126b56d5e143f034d4c5d55e3afda0d76cfac832cda901.json
  41. 1 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/5ea99847a7f07fcde38f7b87179e0e6351856b111ae3603aa44387a7410169e1.json
  42. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/6e2fef04a85af78b3fbb688cc5397978268c032e0d99512507c29e24eb987506.json
  43. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/81d09634f3020b7818665c7ef89fca956a50210c8414ea5f5cb97ac76d9eed99.json
  44. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/88435c4b31aeb9720617d5d2d8d2a502c92ea8a7930a9b718798fe5f18276df6.json
  45. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/9c0c63c461bb4c757b3fb29cda1a479def5bc6724d85034abc3b258aa8529eb7.json
  46. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/bb892fefc121cd07a8db32303cac09fb01b1076103637fcc9215040955ef536b.json
  47. 0 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/c3c0cbe1f5e32503469869e07ed67c51cbd42001bee2d21e07555f42ac596f03.json
  48. 1 0
      Frontend/RiffMasterFront/.angular/cache/16.0.4/babel-webpack/cf864d2955070da24f17148048dc17baf14adae90c87e7884eacf58535e925c3.json
  49. 12 12
      Frontend/RiffMasterFront/.idea/workspace.xml
  50. 19 8
      Frontend/RiffMasterFront/src/app/Services/auth.service.ts
  51. 17 0
      Frontend/RiffMasterFront/src/app/Services/song.service.ts
  52. 50 14
      Frontend/RiffMasterFront/src/app/login-page/login-page.component.ts
  53. 1 1
      Frontend/RiffMasterFront/src/app/main-page/main-page.component.html
  54. 27 16
      Frontend/RiffMasterFront/src/app/main-page/main-page.component.ts
  55. 6 0
      Frontend/RiffMasterFront/src/proxy.conf.json

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

@@ -10,12 +10,24 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="8315de53-8c15-472c-a710-45938463dc02" name="Changes" comment="RIFFMASTER: add frontend files">
+      <change afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/proxy.conf.json" afterDir="false" />
+      <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/1.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/1.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/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/6.pack" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/6.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/angular.json" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/angular.json" 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.module.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/app.module.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/login-page/login-page.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/login-page/login-page.component.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/Services/auth.service.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/Services/auth.service.ts" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/login-page/login-page.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/login-page/login-page.component.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../../Frontend/RiffMasterFront/src/app/main-page/main-page.component.ts" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -27,6 +39,7 @@
       <list>
         <option value="Interface" />
         <option value="Class" />
+        <option value="Jsp File" />
       </list>
     </option>
   </component>
@@ -53,41 +66,42 @@
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;last_opened_file_path&quot;: &quot;C:/Users/Quba/Desktop/studia/WPFt/RiffMaster project/Frontend/RiffMasterFront&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;,
-    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
-    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
-    &quot;project.structure.last.edited&quot;: &quot;Artifacts&quot;,
-    &quot;project.structure.proportion&quot;: &quot;0.15&quot;,
-    &quot;project.structure.side.proportion&quot;: &quot;0.2&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.editor&quot;,
-    &quot;spring.configuration.checksum&quot;: &quot;38008dd81c2f4d7985ecf6e0ce8af1d1&quot;,
-    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "RunOnceActivity.OpenProjectViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "SHARE_PROJECT_CONFIGURATION_FILES": "true",
+    "WebServerToolWindowFactoryState": "false",
+    "last_opened_file_path": "C:/Users/Kuba/Desktop/studia/WPFt/inne/oslo_boating_project/boat-reservation-logic",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "nodejs_package_manager_path": "npm",
+    "project.structure.last.edited": "Artifacts",
+    "project.structure.proportion": "0.15",
+    "project.structure.side.proportion": "0.2",
+    "settings.editor.selected.configurable": "reference.settings.project.maven.repository.indices",
+    "spring.configuration.checksum": "38008dd81c2f4d7985ecf6e0ce8af1d1",
+    "vue.rearranger.settings.migration": "true"
   }
-}</component>
+}]]></component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="C:\Users\Kuba\Desktop\studia\WPFt\RiffMaster web application\Backend\Spring\src\main\java\pl\dmcs\jwoszczyk\RiffMaster" />
       <recent name="C:\Users\Quba\Desktop\studia\WPFt\Spring\src\main\java\pl\dmcs\jwoszczyk" />
       <recent name="C:\Users\Quba\Desktop\studia\WPFt\Spring\src\main\webapp\resources" />
       <recent name="C:\Users\Quba\Desktop\studia\WPFt\Spring\src\main\java\pl\dmcs\jwoszczyk\configuration" />
       <recent name="C:\Users\Quba\Desktop\studia\WPFt\Spring\src\main\webapp" />
-      <recent name="C:\Users\Quba\Desktop\studia\WPFt\Spring\src\main" />
     </key>
     <key name="MoveFile.RECENT_KEYS">
+      <recent name="C:\Users\Kuba\Desktop\studia\WPFt\RiffMaster web application\Backend\Spring\src\main\webapp" />
       <recent name="C:\Users\Quba\Desktop\studia\WPFt\Spring\src\main\webapp" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="pl.dmcs.jwoszczyk.configuration" />
       <recent name="pl.dmcs.jwoszczyk.domain" />
       <recent name="pl.dmcs.jwoszczyk.service" />
-      <recent name="pl.dmcs.jwoszczyk.configuration" />
       <recent name="pl.dmcs.jwoszczyk.controller" />
       <recent name="pl.dmcs.jwoszczyk.repository" />
     </key>
@@ -211,6 +225,8 @@
       <workItem from="1686583836581" duration="9870000" />
       <workItem from="1686678540338" duration="5114000" />
       <workItem from="1686746351506" duration="5669000" />
+      <workItem from="1686758960546" duration="5072000" />
+      <workItem from="1686767581715" duration="4619000" />
     </task>
     <task id="LOCAL-00001" summary="add basic hello world and transfering data to server">
       <created>1679575346987</created>

+ 0 - 6
Backend/Spring/pom.xml

@@ -153,12 +153,6 @@
 
         <!--################################################################_-->
 
-
-
     </dependencies>
 
-
-
-
-
 </project>

+ 18 - 0
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/configuration/CorsConfig.java

@@ -0,0 +1,18 @@
+package pl.dmcs.jwoszczyk.configuration;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+@EnableWebMvc
+public class CorsConfig implements WebMvcConfigurer {
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**")
+                .allowedOrigins("http://localhost:4200") // Adjust with your Angular frontend URL
+                .allowedMethods("GET", "POST", "PUT", "DELETE")
+                .allowedHeaders("*");
+    }
+}

+ 65 - 0
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/AuthController.java

@@ -0,0 +1,65 @@
+package pl.dmcs.jwoszczyk.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import pl.dmcs.jwoszczyk.domain.AppUser;
+import pl.dmcs.jwoszczyk.repository.IAppUserRepository;
+import pl.dmcs.jwoszczyk.service.IAppUserRoleService;
+
+@RestController
+@RequestMapping("auth")
+public class AuthController {
+
+    //@Autowired
+    //private AuthenticationManager authenticationManager;
+
+    @Autowired
+    private IAppUserRepository userRepository;
+
+    @Autowired
+    private PasswordEncoder passwordEncoder;
+
+    //@Autowired
+    //private TokenProvider tokenProvider;
+
+//    @PostMapping("/login")
+//    public ResponseEntity<?> authenticateUser(@RequestBody LoginRequest loginRequest) {
+//        // Perform authentication
+//        Authentication authentication = authenticationManager.authenticate(
+//                new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword()));
+//
+//        SecurityContextHolder.getContext().setAuthentication(authentication);
+//
+//        // Generate token
+//        String token = tokenProvider.generateToken(authentication);
+//
+//        // Return the token
+//        return ResponseEntity.ok(new JwtAuthenticationResponse(token));
+//    }
+//
+//    @PostMapping("/register")
+//    public ResponseEntity<?> registerUser(@RequestBody SignUpRequest signUpRequest) {
+//        // Check if the username is already taken
+//        if (userRepository.existsByUsername(signUpRequest.getUsername())) {
+//            return ResponseEntity.badRequest().body("Username is already taken!");
+//        }
+//
+//        // Create a new user
+//        AppUser user = new AppUser(signUpRequest.getUsername(), signUpRequest.getPassword());
+//        user.setPassword(passwordEncoder.encode(user.getPassword()));
+//
+//        // Save the user
+//        userRepository.save(user);
+//
+//        return ResponseEntity.ok("User registered successfully!");
+//    }
+}

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

@@ -2,6 +2,7 @@ package pl.dmcs.jwoszczyk.controller;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import pl.dmcs.jwoszczyk.domain.Riff;
@@ -14,7 +15,7 @@ import java.util.Optional;
 import java.util.Set;
 
 @RestController
-@RequestMapping("song")
+@CrossOrigin(origins = "http://localhost:4200")
 public class SongController {
 
     //################################################################_Dependency Injection
@@ -26,9 +27,14 @@ public class SongController {
 
     //################################################################_REST methods
 
-    @RequestMapping(method = RequestMethod.GET)
+
+    @RequestMapping(
+            value = "/song",
+            method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
     public ResponseEntity<List<Song>> getAllSongs() {
         List<Song> songs = songService.getAllSongs();
+        System.out.println("getAllsongs get request works" + songs.size());
         return ResponseEntity.ok(songs);
     }
 

+ 1 - 1
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/domain/Song.java

@@ -19,7 +19,7 @@ public class Song {
 	private String name;
 	private String link;
 	//@ManyToMany(fetch = FetchType.EAGER)
-	@OneToMany(mappedBy = "song", cascade = CascadeType.ALL)
+	@OneToMany(mappedBy = "song", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
 	private Set<Riff> riffs = new HashSet<Riff>(0);
 	@NotNull
 	private double durationMs;

+ 1 - 0
Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/repository/IAppUserRepository.java

@@ -12,6 +12,7 @@ import java.util.List;
 @Repository
 public interface IAppUserRepository extends JpaRepository<AppUser, Long> {
 
+    List<AppUser> findByFirstName(String firstName);
     List<AppUser> findByLastName(String lastName);
     AppUser findById(long id);
     AppUser findByLogin(String login);

+ 38 - 0
Backend/Spring/src/main/webapp/registerPage.jsp

@@ -0,0 +1,38 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Kuba
+  Date: 14.06.2023
+  Time: 18:49
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Registration Page</title>
+    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
+    <script>
+        function onSubmit(token) {
+            document.getElementById("registrationForm").submit();
+        }
+    </script>
+</head>
+
+<body>
+<h1>Registration</h1>
+
+<form id="registrationForm" action="/register" method="POST">
+    <!-- Add your registration form fields here -->
+    <label for="username">Username:</label>
+    <input type="text" id="username" name="username" required><br>
+
+    <label for="password">Password:</label>
+    <input type="password" id="password" name="password" required><br>
+
+    <!-- Add the reCAPTCHA widget -->
+    <div class="g-recaptcha" data-sitekey="YOUR_RECAPTCHA_SITE_KEY" data-callback="onSubmit" data-size="invisible"></div>
+
+    <button type="submit">Register</button>
+</form>
+</body>
+
+</html>

+ 35 - 0
Backend/Spring/src/main/webapp/riffmasterMainPage.jsp

@@ -0,0 +1,35 @@
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Song List</title>
+</head>
+<body>
+<h3><spring:message code="label.userList"/></h3>
+<c:if  test="${!empty appUserList}">
+    <table class="data">
+        <tr>
+            <th><spring:message code="label.firstName"/></th>
+            <th><spring:message code="label.lastName"/></th>
+            <th><spring:message code="label.email"/></th>
+            <th><spring:message code="label.telephone"/></th>
+            <th>&nbsp;</th>
+            <th>&nbsp;</th>
+            <th>&nbsp;</th>
+        </tr>
+        <c:forEach items="${appUserList}" var="appUser">
+            <tr>
+                <td>${appUser.firstName} </td>
+                <td>${appUser.lastName} </td>
+                <td>${appUser.email}</td>
+                <td>${appUser.telephone}</td>
+                <td><a href="delete/${appUser.id}">delete</a></td>
+                <td><a href="appUsers?appUserId=${appUser.id}">edit</a></td>
+                <td><a href="generatePdf-${appUser.id}">pdf</a></td>
+            </tr>
+        </c:forEach>
+    </table>
+</c:if>
+</body>
+</html>

二進制
Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/configuration/CorsConfig.class


二進制
Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/AuthController.class


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


二進制
Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/domain/Song.class


二進制
Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/repository/IAppUserRepository.class


+ 38 - 0
Backend/Spring/target/Spring-1.0-SNAPSHOT/registerPage.jsp

@@ -0,0 +1,38 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Kuba
+  Date: 14.06.2023
+  Time: 18:49
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Registration Page</title>
+    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
+    <script>
+        function onSubmit(token) {
+            document.getElementById("registrationForm").submit();
+        }
+    </script>
+</head>
+
+<body>
+<h1>Registration</h1>
+
+<form id="registrationForm" action="/register" method="POST">
+    <!-- Add your registration form fields here -->
+    <label for="username">Username:</label>
+    <input type="text" id="username" name="username" required><br>
+
+    <label for="password">Password:</label>
+    <input type="password" id="password" name="password" required><br>
+
+    <!-- Add the reCAPTCHA widget -->
+    <div class="g-recaptcha" data-sitekey="YOUR_RECAPTCHA_SITE_KEY" data-callback="onSubmit" data-size="invisible"></div>
+
+    <button type="submit">Register</button>
+</form>
+</body>
+
+</html>

+ 35 - 0
Backend/Spring/target/Spring-1.0-SNAPSHOT/riffmasterMainPage.jsp

@@ -0,0 +1,35 @@
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Song List</title>
+</head>
+<body>
+<h3><spring:message code="label.userList"/></h3>
+<c:if  test="${!empty appUserList}">
+    <table class="data">
+        <tr>
+            <th><spring:message code="label.firstName"/></th>
+            <th><spring:message code="label.lastName"/></th>
+            <th><spring:message code="label.email"/></th>
+            <th><spring:message code="label.telephone"/></th>
+            <th>&nbsp;</th>
+            <th>&nbsp;</th>
+            <th>&nbsp;</th>
+        </tr>
+        <c:forEach items="${appUserList}" var="appUser">
+            <tr>
+                <td>${appUser.firstName} </td>
+                <td>${appUser.lastName} </td>
+                <td>${appUser.email}</td>
+                <td>${appUser.telephone}</td>
+                <td><a href="delete/${appUser.id}">delete</a></td>
+                <td><a href="appUsers?appUserId=${appUser.id}">edit</a></td>
+                <td><a href="generatePdf-${appUser.id}">pdf</a></td>
+            </tr>
+        </c:forEach>
+    </table>
+</c:if>
+</body>
+</html>

二進制
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/configuration/CorsConfig.class


二進制
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/AuthController.class


二進制
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SongController.class


二進制
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/domain/Song.class


二進制
Backend/Spring/target/classes/pl/dmcs/jwoszczyk/repository/IAppUserRepository.class


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/0.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/1.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/10.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/11.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/12.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/2.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/3.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/4.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/5.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/6.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/7.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/8.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/9.pack


二進制
Frontend/RiffMasterFront/.angular/cache/16.0.4/angular-webpack/9163ed2c587ff4665fb17ea4ebc8750a69df1e73/index.pack


二進制
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/021c2b1bf9b52420ff6c8804170e0661bb01f304d80d1b68c234ad549fbd7178.json


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


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

@@ -0,0 +1 @@
+{"ast":null,"code":"import * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nclass SongService {\n  constructor(http) {\n    this.http = http;\n    this.apiUrl = 'http://localhost:8080/song';\n  }\n  getAllSongs() {\n    return this.http.get(this.apiUrl);\n  }\n}\nSongService.ɵfac = function SongService_Factory(t) {\n  return new (t || SongService)(i0.ɵɵinject(i1.HttpClient));\n};\nSongService.ɵprov = /*@__PURE__*/i0.ɵɵdefineInjectable({\n  token: SongService,\n  factory: SongService.ɵfac,\n  providedIn: 'root'\n});\nexport { SongService };","map":{"version":3,"names":["SongService","constructor","http","apiUrl","getAllSongs","get","i0","ɵɵinject","i1","HttpClient","factory","ɵfac","providedIn"],"sources":["C:\\Users\\Kuba\\Desktop\\studia\\WPFt\\RiffMaster web application\\Frontend\\RiffMasterFront\\src\\app\\Services\\song.service.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Song } from '../models/song';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SongService {\r\n  const apiUrl = 'http://localhost:8080/song';\r\n\r\n  constructor(private http: HttpClient) {}\r\n\r\n  getAllSongs(): Observable<Song[]> {\r\n    return this.http.get<Song[]>(this.apiUrl);\r\n  }\r\n}\r\n"],"mappings":";;AAKA,MAGaA,WAAW;EAGtBC,YAAoBC,IAAgB;IAAhB,KAAAA,IAAI,GAAJA,IAAI;IAFlB,KAAAC,MAAM,GAAG,4BAA4B;EAEJ;EAEvCC,WAAWA,CAAA;IACT,OAAO,IAAI,CAACF,IAAI,CAACG,GAAG,CAAS,IAAI,CAACF,MAAM,CAAC;EAC3C;;AAPWH,WAAW,C;mBAAXA,WAAW,EAAAM,EAAA,CAAAC,QAAA,CAAAC,EAAA,CAAAC,UAAA;AAAA;AAAXT,WAAW,C;SAAXA,WAAW;EAAAU,OAAA,EAAXV,WAAW,CAAAW,IAAA;EAAAC,UAAA,EAFV;AAAM;SAEPZ,WAAW"},"metadata":{},"sourceType":"module","externalDependencies":[]}

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


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

@@ -0,0 +1 @@
+{"ast":null,"code":"import * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nclass SongService {\n  constructor(http) {\n    this.http = http;\n    this.apiUrl = 'http://localhost:8080/song';\n  }\n  getAllSongs() {\n    return this.http.get(this.apiUrl);\n  }\n}\nSongService.ɵfac = function SongService_Factory(t) {\n  return new (t || SongService)(i0.ɵɵinject(i1.HttpClient));\n};\nSongService.ɵprov = /*@__PURE__*/i0.ɵɵdefineInjectable({\n  token: SongService,\n  factory: SongService.ɵfac,\n  providedIn: 'root'\n});\nexport { SongService };","map":{"version":3,"names":["SongService","constructor","http","apiUrl","getAllSongs","get","i0","ɵɵinject","i1","HttpClient","factory","ɵfac","providedIn"],"sources":["C:\\Users\\Kuba\\Desktop\\studia\\WPFt\\RiffMaster web application\\Frontend\\RiffMasterFront\\src\\app\\Services\\song.service.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Song } from '../models/song';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SongService {\r\n  apiUrl = 'http://localhost:8080/song';\r\n\r\n  constructor(private http: HttpClient) {}\r\n\r\n  getAllSongs(): Observable<Song[]> {\r\n    return this.http.get<Song[]>(this.apiUrl);\r\n  }\r\n}\r\n"],"mappings":";;AAKA,MAGaA,WAAW;EAGtBC,YAAoBC,IAAgB;IAAhB,KAAAA,IAAI,GAAJA,IAAI;IAFxB,KAAAC,MAAM,GAAG,4BAA4B;EAEE;EAEvCC,WAAWA,CAAA;IACT,OAAO,IAAI,CAACF,IAAI,CAACG,GAAG,CAAS,IAAI,CAACF,MAAM,CAAC;EAC3C;;AAPWH,WAAW,C;mBAAXA,WAAW,EAAAM,EAAA,CAAAC,QAAA,CAAAC,EAAA,CAAAC,UAAA;AAAA;AAAXT,WAAW,C;SAAXA,WAAW;EAAAU,OAAA,EAAXV,WAAW,CAAAW,IAAA;EAAAC,UAAA,EAFV;AAAM;SAEPZ,WAAW"},"metadata":{},"sourceType":"module","externalDependencies":[]}

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


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


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


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


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


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


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

@@ -0,0 +1 @@
+{"ast":null,"code":"import * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nclass SongService {\n  constructor(http) {\n    this.http = http;\n    this.apiUrl = '/song'; // Replace with the appropriate API URL\n  }\n\n  getAllSongs() {\n    return this.http.get(this.apiUrl);\n  }\n}\nSongService.ɵfac = function SongService_Factory(t) {\n  return new (t || SongService)(i0.ɵɵinject(i1.HttpClient));\n};\nSongService.ɵprov = /*@__PURE__*/i0.ɵɵdefineInjectable({\n  token: SongService,\n  factory: SongService.ɵfac,\n  providedIn: 'root'\n});\nexport { SongService };","map":{"version":3,"names":["SongService","constructor","http","apiUrl","getAllSongs","get","i0","ɵɵinject","i1","HttpClient","factory","ɵfac","providedIn"],"sources":["C:\\Users\\Kuba\\Desktop\\studia\\WPFt\\RiffMaster web application\\Frontend\\RiffMasterFront\\src\\app\\Services\\song.service.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Song } from '../models/song';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SongService {\r\n  private apiUrl = '/song'; // Replace with the appropriate API URL\r\n\r\n  constructor(private http: HttpClient) {}\r\n\r\n  getAllSongs(): Observable<Song[]> {\r\n    return this.http.get<Song[]>(this.apiUrl);\r\n  }\r\n}\r\n"],"mappings":";;AAKA,MAGaA,WAAW;EAGtBC,YAAoBC,IAAgB;IAAhB,KAAAA,IAAI,GAAJA,IAAI;IAFhB,KAAAC,MAAM,GAAG,OAAO,CAAC,CAAC;EAEa;;EAEvCC,WAAWA,CAAA;IACT,OAAO,IAAI,CAACF,IAAI,CAACG,GAAG,CAAS,IAAI,CAACF,MAAM,CAAC;EAC3C;;AAPWH,WAAW,C;mBAAXA,WAAW,EAAAM,EAAA,CAAAC,QAAA,CAAAC,EAAA,CAAAC,UAAA;AAAA;AAAXT,WAAW,C;SAAXA,WAAW;EAAAU,OAAA,EAAXV,WAAW,CAAAW,IAAA;EAAAC,UAAA,EAFV;AAAM;SAEPZ,WAAW"},"metadata":{},"sourceType":"module","externalDependencies":[]}

+ 12 - 12
Frontend/RiffMasterFront/.idea/workspace.xml

@@ -6,18 +6,16 @@
   <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/controller/SpringSecurityCustomPagesController.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/controller/SpringSecurityCustomPagesController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/repository/ISongRepository.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/repository/ISongRepository.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/service/AppUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/service/AppUserService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/META-INF/MANIFEST.MF" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/META-INF/MANIFEST.MF" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/SpringSecurityCustomPagesController.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/controller/SpringSecurityCustomPagesController.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/repository/ISongRepository.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/repository/ISongRepository.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/configuration/SecurityConfiguration.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SpringSecurityCustomPagesController.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/controller/SpringSecurityCustomPagesController.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/repository/ISongRepository.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/repository/ISongRepository.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/pom.xml" 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/domain/Song.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/domain/Song.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/repository/IAppUserRepository.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/src/main/java/pl/dmcs/jwoszczyk/repository/IAppUserRepository.java" 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/domain/Song.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/domain/Song.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/repository/IAppUserRepository.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/Spring-1.0-SNAPSHOT/WEB-INF/classes/pl/dmcs/jwoszczyk/repository/IAppUserRepository.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/domain/Song.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/domain/Song.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/repository/IAppUserRepository.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../Backend/Spring/target/classes/pl/dmcs/jwoszczyk/repository/IAppUserRepository.class" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -103,6 +101,8 @@
       <workItem from="1686678564264" duration="5609000" />
       <workItem from="1686688295465" duration="464000" />
       <workItem from="1686746338385" duration="4134000" />
+      <workItem from="1686758969361" duration="2784000" />
+      <workItem from="1686767850103" duration="2712000" />
     </task>
     <task id="LOCAL-00001" summary="RIFFMASTER: add frontend project">
       <created>1685976235580</created>

+ 19 - 8
Frontend/RiffMasterFront/src/app/Services/auth.service.ts

@@ -1,17 +1,28 @@
-import { HttpClient } from '@angular/common/http';
+import { HttpClient, HttpErrorResponse } from '@angular/common/http';
 import { Injectable } from '@angular/core';
+import { Observable, throwError } from 'rxjs';
+import { catchError, tap } from 'rxjs/operators';
 
-@Injectable({providedIn: 'root'})
+@Injectable({ providedIn: 'root' })
 export class AuthService {
   private baseUrl = 'http://localhost:8080'; // Replace with your backend URL
 
-  constructor(private http: HttpClient) { }
+  constructor(private http: HttpClient) {}
 
-  login(email: string, password: string) {
-    const url = `${this.baseUrl}/signin`;
+  login(email: string, password: string): Observable<any> {
+    const url = `${this.baseUrl}/login`;
     const body = { email, password };
-    console.log(body)
 
-    return this.http.post(url, body);
+    return this.http.post(url, body).pipe(
+      tap((response) => {
+        // Handle successful login, if needed
+        console.log('Logged in successfully.', response);
+      }),
+      catchError((error: HttpErrorResponse) => {
+        // Handle login error
+        console.error('Error while logging in:', error.error);
+        return throwError('Invalid username and password');
+      })
+    );
   }
-}
+}

+ 17 - 0
Frontend/RiffMasterFront/src/app/Services/song.service.ts

@@ -0,0 +1,17 @@
+import { HttpClient } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs';
+import { Song } from '../models/song';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class SongService {
+  apiUrl = 'http://localhost:8080/song';
+
+  constructor(private http: HttpClient) {}
+
+  getAllSongs(): Observable<Song[]> {
+    return this.http.get<Song[]>(this.apiUrl);
+  }
+}

+ 50 - 14
Frontend/RiffMasterFront/src/app/login-page/login-page.component.ts

@@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core';
 import { AuthService } from '../Services/auth.service';
 import { Injector } from '@angular/core';
 import { Router } from '@angular/router';
+import { HttpClient } from '@angular/common/http';
 
 @Component({
   selector: 'app-login-page',
@@ -20,24 +21,59 @@ export class LoginPageComponent{
   //   this.authService = this.injector.get(AuthService);
   // }
 
-  constructor(private authService: AuthService, private router: Router) {
-  }
+  // constructor(private authService: AuthService, private router: Router) {
+  // }
+
+  constructor(
+    private router: Router,
+    private http: HttpClient
+  ) { }
 
+  //#######################################################################
+
+  model: any = {};
+  sessionId: any = "";
 
   login() {
-    console.log('logowanie')
-    this.authService.login(this.userLogin, this.password)
-      .subscribe(
-        (response) => {
-          this.router.navigate(['/main']);
-          console.log('logged in successfully')
-        },
-        (error: string) => {
-          // Handle login error, e.g., display an error message
-          console.log('error')
-        }
-      );
+    let url = '/api/login';
+    this.http.post<any>(url, {
+      username: this.model.username,
+      password: this.model.password
+    }).subscribe(res => {
+      if (res) {
+        this.sessionId = res.sessionId;
+
+        sessionStorage.setItem(
+          'token',
+          this.sessionId
+        );
+        this.router.navigate(['']);
+      } else {
+        alert("Authentication failed.")
+      }
+    });
   }
 
 
+
+
+
+  //#######################################################################
+
+  // login() {
+  //   console.log('logowanie')
+  //   this.authService.login(this.userLogin, this.password)
+  //     .subscribe(
+  //       (response) => {
+  //         this.router.navigate(['/main']);
+  //         console.log('logged in successfully')
+  //       },
+  //       (error: string) => {
+  //         // Handle login error, e.g., display an error message
+  //         console.log('error')
+  //       }
+  //     );
+  // }
+
+
 }

+ 1 - 1
Frontend/RiffMasterFront/src/app/main-page/main-page.component.html

@@ -21,7 +21,7 @@
 
         <div class="song-list">
           <mat-list>
-            <mat-list-item *ngFor="let song of filteredSongs" (click)="displaySongInformation(song)">
+            <mat-list-item *ngFor="let song of songs" (click)="displaySongInformation(song)">
               {{ song }}
             </mat-list-item>
           </mat-list>

+ 27 - 16
Frontend/RiffMasterFront/src/app/main-page/main-page.component.ts

@@ -1,18 +1,15 @@
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
 import { DatePipe } from '@angular/common';
+import { Song } from '../models/song';
+import { SongService } from '../Services/song.service';
 
 @Component({
   selector: 'app-main-page',
   templateUrl: './main-page.component.html',
   styleUrls: ['./main-page.component.css'],
 })
-export class MainPageComponent {
-  songs: string[] = [
-    'Song 1',
-    'Song 2',
-    'Song 3',
-    // Add more songs here
-  ];
+export class MainPageComponent implements OnInit {
+  songs: Song[] = [];
   searchQuery: string = '';
 
   uploadDate: Date = new Date();
@@ -20,16 +17,32 @@ export class MainPageComponent {
   lastUpdateDate: Date = new Date();
   lastUpdateUser: string = 'John Smith';
 
-  constructor(private datePipe: DatePipe) {
-    // Other initialization logic
+  constructor(
+    private datePipe: DatePipe,
+    private songService: SongService
+  ) {}
+
+  ngOnInit() {
+    this.getAllSongs();
+  }
+
+  getAllSongs(): void {
+    this.songService.getAllSongs().subscribe(
+      (response: Song[]) => {
+        this.songs = response;
+      },
+      (error: any) => {
+        console.log('Error retrieving songs:', error);
+      }
+    );
   }
 
-  get filteredSongs(): string[] {
+  get filteredSongs(): Song[] {
     if (this.searchQuery.trim() === '') {
       return this.songs;
     } else {
       return this.songs.filter((song) =>
-        song.toLowerCase().includes(this.searchQuery.toLowerCase())
+        song.name.toLowerCase().includes(this.searchQuery.toLowerCase())
       );
     }
   }
@@ -41,12 +54,10 @@ export class MainPageComponent {
     return '';
   }
 
-
-  // Other component methods and lifecycle hooks
-
-  displaySongInformation(song: string): void {
+  displaySongInformation(song: Song): void {
     // Logic to fetch and set the song information based on the selected song
     // Replace the code below with your own implementation
+    console.log('Selected song:', song);
   }
 
   download() {

+ 6 - 0
Frontend/RiffMasterFront/src/proxy.conf.json

@@ -0,0 +1,6 @@
+{
+  "/api/*": {
+    "target": "http://localhost:8080",
+    "secure": false
+  }
+}

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