From b7e1b19b42097d559f21bb867fbe9b192061d36e Mon Sep 17 00:00:00 2001 From: nawal-ahmad Date: Sat, 23 Oct 2021 21:24:11 +0300 Subject: [PATCH 01/21] signup-login-profile --- build.gradle | 8 +- .../com/example/init/controllers/User.java | 65 ++++++++ .../example/init/models/ApplicationUser.java | 144 ++++++++++++++++++ .../ApplicationUserRepository.java | 10 ++ .../init/security/UserDetailsServiceImpl.java | 25 +++ .../init/security/WebSecurityConfig.java | 32 ++++ src/main/resources/application.properties | 23 ++- src/main/resources/templates/login.html | 29 ++++ src/main/resources/templates/profile.html | 18 +++ src/main/resources/templates/signup.html | 45 ++++++ 10 files changed, 389 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/example/init/controllers/User.java create mode 100644 src/main/java/com/example/init/models/ApplicationUser.java create mode 100644 src/main/java/com/example/init/repositories/ApplicationUserRepository.java create mode 100644 src/main/java/com/example/init/security/UserDetailsServiceImpl.java create mode 100644 src/main/java/com/example/init/security/WebSecurityConfig.java create mode 100644 src/main/resources/templates/login.html create mode 100644 src/main/resources/templates/profile.html create mode 100644 src/main/resources/templates/signup.html diff --git a/build.gradle b/build.gradle index 71840fc..8a1b3cf 100644 --- a/build.gradle +++ b/build.gradle @@ -13,16 +13,16 @@ repositories { } dependencies { - // implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - // implementation 'org.springframework.boot:spring-boot-starter-security' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-websocket' - // implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' + implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'org.postgresql:postgresql' testImplementation 'org.springframework.boot:spring-boot-starter-test' - // testImplementation 'org.springframework.security:spring-security-test' + testImplementation 'org.springframework.security:spring-security-test' } test { diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java new file mode 100644 index 0000000..413b164 --- /dev/null +++ b/src/main/java/com/example/init/controllers/User.java @@ -0,0 +1,65 @@ +package com.example.init.controllers; + +import antlr.BaseAST; +import com.example.init.models.ApplicationUser; +import com.example.init.repositories.ApplicationUserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.servlet.view.RedirectView; + +import java.security.Principal; +import java.util.ArrayList; + +@Controller +public class User { + + @Autowired + BCryptPasswordEncoder bCryptPasswordEncoder; + + @Autowired + ApplicationUserRepository applicationUserRepository; + + @GetMapping("/signup") + public String getSignUpPage() { + return "signup"; + } + + @GetMapping("/login") + public String getSignInPage() { + return "login"; + } + + @PostMapping("/signup") + public RedirectView attemptSignUp(@ModelAttribute ApplicationUser user) { + ApplicationUser newUser = new ApplicationUser(user.getEmail(),user.getUsername(), + bCryptPasswordEncoder.encode(user.getPassword()), + user.getFirstName(), user.getLastName(), user.getDateOfBirth(), user.getBio()); + applicationUserRepository.save(newUser); + Authentication authentication = new UsernamePasswordAuthenticationToken(user, null, new ArrayList<>()); + SecurityContextHolder.getContext().setAuthentication(authentication); + return new RedirectView("/login"); + } + + @PostMapping("/login") + public RedirectView loginResponse(@ModelAttribute ApplicationUser user, Model model) { + model.addAttribute("username", applicationUserRepository.findByUsername(user.getUsername())); + return new RedirectView("profile"); + } + + @GetMapping("/profile") + public String getUserProfile(Principal principal, Model model) { + ApplicationUser user = applicationUserRepository.findByUsername(principal.getName()); + model.addAttribute("username", principal.getName()); + model.addAttribute("userProfile", user); + return "profile"; + } + +} diff --git a/src/main/java/com/example/init/models/ApplicationUser.java b/src/main/java/com/example/init/models/ApplicationUser.java new file mode 100644 index 0000000..7f4ca18 --- /dev/null +++ b/src/main/java/com/example/init/models/ApplicationUser.java @@ -0,0 +1,144 @@ +package com.example.init.models; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import javax.persistence.*; +import java.util.Collection; + +@Entity +public class ApplicationUser implements UserDetails { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; + + @Column(unique = true) + private String email; + + @Column(unique = true) + private String username; + + private String password; + private String firstName; + private String lastName; + private String dateOfBirth; + private String bio; + + public ApplicationUser() { + } + + public ApplicationUser(Long id, String email, String username, String password, String firstName, String lastName, String dateOfBirth, String bio) { + this.id = id; + this.email = email; + this.username = username; + this.password = password; + this.firstName = firstName; + this.lastName = lastName; + this.dateOfBirth = dateOfBirth; + this.bio = bio; + } + + public ApplicationUser(String email, String username, String password, String firstName, String lastName, String dateOfBirth, String bio) { + this.email = email; + this.username = username; + this.password = password; + this.firstName = firstName; + this.lastName = lastName; + this.dateOfBirth = dateOfBirth; + this.bio = bio; + } + + + @Override + public Collection getAuthorities() { + return null; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public boolean isAccountNonExpired() { + return false; + } + + @Override + public boolean isAccountNonLocked() { + return false; + } + + @Override + public boolean isCredentialsNonExpired() { + return false; + } + + @Override + public boolean isEnabled() { + return false; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(String dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public String getBio() { + return bio; + } + + public void setBio(String bio) { + this.bio = bio; + } + +} diff --git a/src/main/java/com/example/init/repositories/ApplicationUserRepository.java b/src/main/java/com/example/init/repositories/ApplicationUserRepository.java new file mode 100644 index 0000000..b2dba6f --- /dev/null +++ b/src/main/java/com/example/init/repositories/ApplicationUserRepository.java @@ -0,0 +1,10 @@ +package com.example.init.repositories; + +import com.example.init.models.ApplicationUser; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ApplicationUserRepository extends JpaRepository { + public ApplicationUser findByUsername(String username); +} diff --git a/src/main/java/com/example/init/security/UserDetailsServiceImpl.java b/src/main/java/com/example/init/security/UserDetailsServiceImpl.java new file mode 100644 index 0000000..c6b5e57 --- /dev/null +++ b/src/main/java/com/example/init/security/UserDetailsServiceImpl.java @@ -0,0 +1,25 @@ +package com.example.init.security; + +import com.example.init.models.ApplicationUser; +import com.example.init.repositories.ApplicationUserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +@Service +public class UserDetailsServiceImpl implements UserDetailsService { + + @Autowired + ApplicationUserRepository applicationUserRepository; + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + ApplicationUser applicationUser = applicationUserRepository.findByUsername(username); + if (applicationUser == null) { + throw new UsernameNotFoundException((username + " not found!")); + } + return applicationUser; + } +} diff --git a/src/main/java/com/example/init/security/WebSecurityConfig.java b/src/main/java/com/example/init/security/WebSecurityConfig.java new file mode 100644 index 0000000..d29a49e --- /dev/null +++ b/src/main/java/com/example/init/security/WebSecurityConfig.java @@ -0,0 +1,32 @@ +package com.example.init.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +@Configuration +@EnableWebSecurity +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + @Autowired + UserDetailsServiceImpl userDetailsService; + + @Bean + public BCryptPasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder()); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.cors().disable().csrf().disable().authorizeRequests().antMatchers( "/login", "/signup","/").permitAll().antMatchers("/adminpanel").hasAuthority("ROLE_ADMIN").anyRequest().authenticated().and().formLogin().loginPage("/login").loginProcessingUrl("/perform_login").defaultSuccessUrl("/", true).failureUrl("/error").and().logout().logoutUrl("/perform_logout"); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f03a366..30c62a3 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,18 @@ +spring.datasource.hikari.connectionTimeout=20000 +spring.datasource.hikari.maximumPoolSize=5 spring.sql.init.platform=postgres -spring.datasource.url=jdbc:postgresql://localhost:5432/coders -spring.datasource.username=abdelqader -spring.datasource.password=0000 -spring.jpa.database=postgresql -spring.jpa.generate-ddl=true -spring.jpa.hibernate.ddl-auto=update + +spring.datasource.url=jdbc:postgresql://localhost:5433/init +spring.datasource.username=postgres +spring.datasource.password=1234 + +spring.jpa.hibernate.ddl-auto=create-drop +spring.datasource.initialization-mode=always + +spring.jpa.show-sql=true +spring.jpa.generate-ddl=false +spring.jpa.open-in-view=false +spring.jpa.properties.hibernate.show_sql=true +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.properties.hibernate.type=trace +spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html new file mode 100644 index 0000000..2ee5460 --- /dev/null +++ b/src/main/resources/templates/login.html @@ -0,0 +1,29 @@ + + + + + login + + + +
+ +
+ Invalid username and password. +
+
+ You have been logged out. +
+ +
+ + +
+
+ + +
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html new file mode 100644 index 0000000..18157f4 --- /dev/null +++ b/src/main/resources/templates/profile.html @@ -0,0 +1,18 @@ + + + + + user ptofile + + + +
+ ProfilePicture +
+
+

+

+

+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/signup.html b/src/main/resources/templates/signup.html new file mode 100644 index 0000000..29ce50c --- /dev/null +++ b/src/main/resources/templates/signup.html @@ -0,0 +1,45 @@ + + + + + signup + + + +
+ Sign up +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ + \ No newline at end of file From 9820bf9dfbb69154027eda9f4561dedae29ca382 Mon Sep 17 00:00:00 2001 From: nawal-ahmad Date: Sun, 24 Oct 2021 10:06:10 +0300 Subject: [PATCH 02/21] signup-signin-profile --- .../com/example/init/controllers/User.java | 6 +++++ .../ApplicationUserRepository.java | 1 + .../init/security/WebSecurityConfig.java | 22 ++++++++++++++++++- src/main/resources/templates/login.html | 2 +- src/main/resources/templates/profile.html | 1 + 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index 413b164..c870e2e 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -7,6 +7,8 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -17,6 +19,7 @@ import java.security.Principal; import java.util.ArrayList; +import java.util.Optional; @Controller public class User { @@ -51,9 +54,12 @@ public RedirectView attemptSignUp(@ModelAttribute ApplicationUser user) { @PostMapping("/login") public RedirectView loginResponse(@ModelAttribute ApplicationUser user, Model model) { model.addAttribute("username", applicationUserRepository.findByUsername(user.getUsername())); + model.addAttribute("email", applicationUserRepository.findByEmail(user.getEmail())); +// if (user.isEmpty()) user = applicationUserRepository.findByUsername(email); return new RedirectView("profile"); } + @GetMapping("/profile") public String getUserProfile(Principal principal, Model model) { ApplicationUser user = applicationUserRepository.findByUsername(principal.getName()); diff --git a/src/main/java/com/example/init/repositories/ApplicationUserRepository.java b/src/main/java/com/example/init/repositories/ApplicationUserRepository.java index b2dba6f..bba47bc 100644 --- a/src/main/java/com/example/init/repositories/ApplicationUserRepository.java +++ b/src/main/java/com/example/init/repositories/ApplicationUserRepository.java @@ -7,4 +7,5 @@ @Repository public interface ApplicationUserRepository extends JpaRepository { public ApplicationUser findByUsername(String username); + public ApplicationUser findByEmail(String email); } diff --git a/src/main/java/com/example/init/security/WebSecurityConfig.java b/src/main/java/com/example/init/security/WebSecurityConfig.java index d29a49e..f72fb63 100644 --- a/src/main/java/com/example/init/security/WebSecurityConfig.java +++ b/src/main/java/com/example/init/security/WebSecurityConfig.java @@ -27,6 +27,26 @@ protected void configure(AuthenticationManagerBuilder auth) throws Exception { @Override protected void configure(HttpSecurity http) throws Exception { - http.cors().disable().csrf().disable().authorizeRequests().antMatchers( "/login", "/signup","/").permitAll().antMatchers("/adminpanel").hasAuthority("ROLE_ADMIN").anyRequest().authenticated().and().formLogin().loginPage("/login").loginProcessingUrl("/perform_login").defaultSuccessUrl("/", true).failureUrl("/error").and().logout().logoutUrl("/perform_logout"); + http + .cors() + .disable(). + csrf() + .disable() + .authorizeRequests() + .antMatchers( "/login", "/signup","/") + .permitAll().antMatchers("/adminpanel") + .hasAuthority("ROLE_ADMIN") + .anyRequest().authenticated() + .and() + .formLogin() + .loginPage("/login") + .usernameParameter("email") + .permitAll() + .loginProcessingUrl("/perform_login") + .defaultSuccessUrl("/", true) + .failureUrl("/error") + .and() + .logout() + .logoutUrl("/perform_logout"); } } diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 2ee5460..1fbc38b 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -16,7 +16,7 @@
- +
diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index 18157f4..d701c06 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -10,6 +10,7 @@ ProfilePicture
+

From 680942d0f7673904edca84bb0817fa2038aee1c8 Mon Sep 17 00:00:00 2001 From: nawal-ahmad Date: Sun, 24 Oct 2021 12:24:54 +0300 Subject: [PATCH 03/21] post --- .../com/example/init/controllers/User.java | 19 ++++-- .../example/init/models/ApplicationUser.java | 61 ++++++++--------- .../java/com/example/init/models/Post.java | 67 +++++++++++++++++++ .../init/repositories/PostRepository.java | 9 +++ src/main/resources/templates/profile.html | 31 ++++++++- 5 files changed, 149 insertions(+), 38 deletions(-) create mode 100644 src/main/java/com/example/init/models/Post.java create mode 100644 src/main/java/com/example/init/repositories/PostRepository.java diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index c870e2e..28058d2 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -2,7 +2,9 @@ import antlr.BaseAST; import com.example.init.models.ApplicationUser; +import com.example.init.models.Post; import com.example.init.repositories.ApplicationUserRepository; +import com.example.init.repositories.PostRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -16,10 +18,8 @@ import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.servlet.view.RedirectView; - import java.security.Principal; import java.util.ArrayList; -import java.util.Optional; @Controller public class User { @@ -30,6 +30,9 @@ public class User { @Autowired ApplicationUserRepository applicationUserRepository; + @Autowired + PostRepository postRepository; + @GetMapping("/signup") public String getSignUpPage() { return "signup"; @@ -42,9 +45,8 @@ public String getSignInPage() { @PostMapping("/signup") public RedirectView attemptSignUp(@ModelAttribute ApplicationUser user) { - ApplicationUser newUser = new ApplicationUser(user.getEmail(),user.getUsername(), - bCryptPasswordEncoder.encode(user.getPassword()), - user.getFirstName(), user.getLastName(), user.getDateOfBirth(), user.getBio()); + ApplicationUser newUser = new ApplicationUser(user.getEmail(),bCryptPasswordEncoder.encode(user.getUsername()),user.getPassword(), + user.getFirstName(),user.getLastName(),user.getDateOfBirth(),user.getBio()); applicationUserRepository.save(newUser); Authentication authentication = new UsernamePasswordAuthenticationToken(user, null, new ArrayList<>()); SecurityContextHolder.getContext().setAuthentication(authentication); @@ -68,4 +70,11 @@ public String getUserProfile(Principal principal, Model model) { return "profile"; } + @PostMapping("/addPost") + public RedirectView addPost(Principal principle, String body) { + ApplicationUser newUser = applicationUserRepository.findByUsername(principle.getName()); + Post post = new Post(newUser, body); + postRepository.save(post); + return new RedirectView("/profile"); + } } diff --git a/src/main/java/com/example/init/models/ApplicationUser.java b/src/main/java/com/example/init/models/ApplicationUser.java index 7f4ca18..6b7d7c9 100644 --- a/src/main/java/com/example/init/models/ApplicationUser.java +++ b/src/main/java/com/example/init/models/ApplicationUser.java @@ -2,9 +2,9 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; - import javax.persistence.*; import java.util.Collection; +import java.util.List; @Entity public class ApplicationUser implements UserDetails { @@ -18,29 +18,20 @@ public class ApplicationUser implements UserDetails { @Column(unique = true) private String username; - private String password; private String firstName; private String lastName; private String dateOfBirth; private String bio; - public ApplicationUser() { - } + @OneToMany (mappedBy = "applicationUser", fetch = FetchType.EAGER) + private List posts; - public ApplicationUser(Long id, String email, String username, String password, String firstName, String lastName, String dateOfBirth, String bio) { - this.id = id; - this.email = email; - this.username = username; - this.password = password; - this.firstName = firstName; - this.lastName = lastName; - this.dateOfBirth = dateOfBirth; - this.bio = bio; + public ApplicationUser() { } public ApplicationUser(String email, String username, String password, String firstName, String lastName, String dateOfBirth, String bio) { - this.email = email; + this.id = id; this.username = username; this.password = password; this.firstName = firstName; @@ -49,22 +40,6 @@ public ApplicationUser(String email, String username, String password, String fi this.bio = bio; } - - @Override - public Collection getAuthorities() { - return null; - } - - @Override - public String getPassword() { - return password; - } - - @Override - public String getUsername() { - return username; - } - @Override public boolean isAccountNonExpired() { return false; @@ -85,6 +60,15 @@ public boolean isEnabled() { return false; } + public void setUsername(String username) { + this.username = username; + } + + @Override + public Collection getAuthorities() { + return null; + } + public Long getId() { return id; } @@ -101,8 +85,14 @@ public void setEmail(String email) { this.email = email; } - public void setUsername(String username) { - this.username = username; + @Override + public String getUsername() { + return username; + } + + @Override + public String getPassword() { + return password; } public void setPassword(String password) { @@ -141,4 +131,11 @@ public void setBio(String bio) { this.bio = bio; } + public List getPosts() { + return posts; + } + + public void setPosts(List posts) { + this.posts = posts; + } } diff --git a/src/main/java/com/example/init/models/Post.java b/src/main/java/com/example/init/models/Post.java new file mode 100644 index 0000000..1be4400 --- /dev/null +++ b/src/main/java/com/example/init/models/Post.java @@ -0,0 +1,67 @@ +package com.example.init.models; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.hibernate.annotations.CreationTimestamp; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.persistence.*; +import java.time.LocalDateTime; + +@Entity +public class Post { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; + + @ManyToOne() + @JoinColumn(name = "application_user_id") + private ApplicationUser applicationUser; + + private String body; + + @CreationTimestamp + @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) + @JsonFormat(pattern = "yyyy-MM-dd||HH:mm:ss") + private LocalDateTime createdAt; + + public Post() { + } + + public Post(ApplicationUser applicationUser, String body ) { + this.applicationUser = applicationUser; + this.body = body; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public ApplicationUser getApplicationUser() { + return applicationUser; + } + + public void setApplicationUser(ApplicationUser applicationUser) { + this.applicationUser = applicationUser; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public LocalDateTime getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(LocalDateTime createdAt) { + this.createdAt = createdAt; + } +} diff --git a/src/main/java/com/example/init/repositories/PostRepository.java b/src/main/java/com/example/init/repositories/PostRepository.java new file mode 100644 index 0000000..a2d4053 --- /dev/null +++ b/src/main/java/com/example/init/repositories/PostRepository.java @@ -0,0 +1,9 @@ +package com.example.init.repositories; + +import com.example.init.models.Post; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface PostRepository extends JpaRepository { +} diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index d701c06..006e555 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -2,7 +2,7 @@ - user ptofile + user profile @@ -15,5 +15,34 @@
+ +
+
+ +
+
+
+ + +
+ +
+
+
+ +
+
+ +Posts + +
+
+
+

+

+
+
+
+ \ No newline at end of file From 97234e24c76608272da9806d2d9ef8e6c651fe74 Mon Sep 17 00:00:00 2001 From: nawal-ahmad Date: Sun, 24 Oct 2021 13:24:20 +0300 Subject: [PATCH 04/21] add post --- src/main/java/com/example/init/controllers/User.java | 2 +- src/main/java/com/example/init/models/ApplicationUser.java | 2 +- src/main/java/com/example/init/models/Post.java | 6 ++++-- src/main/resources/application.properties | 2 +- src/main/resources/templates/profile.html | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index 28058d2..954e07c 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -45,7 +45,7 @@ public String getSignInPage() { @PostMapping("/signup") public RedirectView attemptSignUp(@ModelAttribute ApplicationUser user) { - ApplicationUser newUser = new ApplicationUser(user.getEmail(),bCryptPasswordEncoder.encode(user.getUsername()),user.getPassword(), + ApplicationUser newUser = new ApplicationUser(user.getEmail(),user.getUsername(),bCryptPasswordEncoder.encode(user.getPassword()), user.getFirstName(),user.getLastName(),user.getDateOfBirth(),user.getBio()); applicationUserRepository.save(newUser); Authentication authentication = new UsernamePasswordAuthenticationToken(user, null, new ArrayList<>()); diff --git a/src/main/java/com/example/init/models/ApplicationUser.java b/src/main/java/com/example/init/models/ApplicationUser.java index 6b7d7c9..c8d5581 100644 --- a/src/main/java/com/example/init/models/ApplicationUser.java +++ b/src/main/java/com/example/init/models/ApplicationUser.java @@ -31,7 +31,7 @@ public ApplicationUser() { } public ApplicationUser(String email, String username, String password, String firstName, String lastName, String dateOfBirth, String bio) { - this.id = id; + this.email=email; this.username = username; this.password = password; this.firstName = firstName; diff --git a/src/main/java/com/example/init/models/Post.java b/src/main/java/com/example/init/models/Post.java index 1be4400..ec2fd70 100644 --- a/src/main/java/com/example/init/models/Post.java +++ b/src/main/java/com/example/init/models/Post.java @@ -14,7 +14,8 @@ public class Post { @Column(name = "id", nullable = false) private Long id; - @ManyToOne() + + @ManyToOne @JoinColumn(name = "application_user_id") private ApplicationUser applicationUser; @@ -22,7 +23,7 @@ public class Post { @CreationTimestamp @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) - @JsonFormat(pattern = "yyyy-MM-dd||HH:mm:ss") +// @JsonFormat(pattern = "yyyy-MM-dd||HH:mm:ss") private LocalDateTime createdAt; public Post() { @@ -64,4 +65,5 @@ public LocalDateTime getCreatedAt() { public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 30c62a3..61bd96f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -6,7 +6,7 @@ spring.datasource.url=jdbc:postgresql://localhost:5433/init spring.datasource.username=postgres spring.datasource.password=1234 -spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.hibernate.ddl-auto=create spring.datasource.initialization-mode=always spring.jpa.show-sql=true diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index 006e555..8e0f5f7 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -9,7 +9,7 @@
ProfilePicture
-
+

From 505504577c2ee5a99c9c69f4b8c982d1fa6b1640 Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Sun, 24 Oct 2021 15:23:30 +0300 Subject: [PATCH 05/21] back to main --- api.json | 98 +++++++++++++++++++ recentquotes.json | 1 + .../com/example/init/controllers/Home.java | 6 ++ src/main/resources/templates/home.html | 8 ++ 4 files changed, 113 insertions(+) create mode 100644 api.json create mode 100644 recentquotes.json diff --git a/api.json b/api.json new file mode 100644 index 0000000..fa9b858 --- /dev/null +++ b/api.json @@ -0,0 +1,98 @@ +[ + { + "id": 849, + "question": "How to remove the docker container with container id mentioned in the command.", + "description": null, + "answers": { + "answer_a": "$ docker rm -rf 9b6343d3b5a0", + "answer_b": "$ docker -rm rf 9b6343d3b5a0", + "answer_c": "$ docker rm 9b6343d3b5a0", + "answer_d": null, + "answer_e": null, + "answer_f": null + }, + "multiple_correct_answers": "false", + "correct_answers": { + "answer_a_correct": "false", + "answer_b_correct": "false", + "answer_c_correct": "true", + "answer_d_correct": "false", + "answer_e_correct": "false", + "answer_f_correct": "false" + }, + "correct_answer": "answer_a", + "explanation": null, + "tip": null, + "tags": [ + { + "name": "Docker" + } + ], + "category": "Docker", + "difficulty": "Easy" + }, + { + "id": 26, + "question": "What is a daemon?", + "description": null, + "answers": { + "answer_a": "It is a generic name for e-mail servers on Linux. The most famous one is mailer-daemon", + "answer_b": "It is a program that keeps running on the background after it is called, answering to requests done by users and other programs.", + "answer_c": "It is an antivirus for Linux.", + "answer_d": "It is the generic name for any Linux server.", + "answer_e": null, + "answer_f": null + }, + "multiple_correct_answers": "false", + "correct_answers": { + "answer_a_correct": "false", + "answer_b_correct": "true", + "answer_c_correct": "false", + "answer_d_correct": "false", + "answer_e_correct": "false", + "answer_f_correct": "false" + }, + "correct_answer": "answer_b", + "explanation": null, + "tip": null, + "tags": [ + { + "name": "Linux" + } + ], + "category": "Linux", + "difficulty": "Medium" + }, + { + "id": 627, + "question": "How can we set infinite execution time for a PHP script?", + "description": null, + "answers": { + "answer_a": "Add set_time_limit() at the beginning of a script", + "answer_b": "Add set_time_limit(infinity) at the beginning of a script", + "answer_c": "Add set_time_limit(0) at the beginning of a script", + "answer_d": null, + "answer_e": null, + "answer_f": null + }, + "multiple_correct_answers": "false", + "correct_answers": { + "answer_a_correct": "false", + "answer_b_correct": "false", + "answer_c_correct": "true", + "answer_d_correct": "false", + "answer_e_correct": "false", + "answer_f_correct": "false" + }, + "correct_answer": "answer_a", + "explanation": null, + "tip": null, + "tags": [ + { + "name": "PHP" + } + ], + "category": "Code", + "difficulty": "Medium" + } + ] \ No newline at end of file diff --git a/recentquotes.json b/recentquotes.json new file mode 100644 index 0000000..fa6c1bc --- /dev/null +++ b/recentquotes.json @@ -0,0 +1 @@ +{"quoteText":"A lot of people give up just before theyre about to make it. You know you never know when that next obstacle is going to be the last one. ", "quoteAuthor":"Chuck Norris", "senderName":"", "senderLink":"", "quoteLink":"http://forismatic.com/en/2bc6cf0fd5/"} \ No newline at end of file diff --git a/src/main/java/com/example/init/controllers/Home.java b/src/main/java/com/example/init/controllers/Home.java index 6adc840..b34f5e3 100644 --- a/src/main/java/com/example/init/controllers/Home.java +++ b/src/main/java/com/example/init/controllers/Home.java @@ -10,4 +10,10 @@ public class Home { public String home() { return "home"; } + + @GetMapping("/index") + public String index() { + return "index"; + } + } diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index 033f5e1..6b510d5 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -8,5 +8,13 @@

Hello World

+ From 0c065c9264263b1ba84af46ee43edb690ccadd2c Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Sun, 24 Oct 2021 15:31:49 +0300 Subject: [PATCH 06/21] any --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 71840fc..b66f0b1 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ repositories { } dependencies { - // implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' @@ -23,6 +23,8 @@ dependencies { runtimeOnly 'org.postgresql:postgresql' testImplementation 'org.springframework.boot:spring-boot-starter-test' // testImplementation 'org.springframework.security:spring-security-test' + implementation 'com.google.code.gson:gson:2.8.8' + } test { From 560a7bfca61f9b17b21cdc05de8b24c17ec7dd34 Mon Sep 17 00:00:00 2001 From: mohnalkhateeb Date: Sun, 24 Oct 2021 16:38:03 +0300 Subject: [PATCH 07/21] api_get --- build.gradle | 1 + .../com/example/init/InitApplication.java | 1 + .../init/controllers/CodeController.java | 8 ++ .../init/controllers/CourseController.java | 56 +++++++++ .../init/controllers/QuizController.java | 41 +++++++ .../com/example/init/controllers/User.java | 4 - .../example/init/models/ApplicationUser.java | 4 + .../java/com/example/init/models/Code.java | 56 +++++++++ .../java/com/example/init/models/Courses.java | 108 ++++++++++++++++ .../java/com/example/init/models/Quiz.java | 53 ++++++++ .../init/repositories/CodeRepositories.java | 10 ++ .../init/repositories/CourseRepository.java | 9 ++ .../init/security/WebSecurityConfig.java | 2 +- src/main/resources/application.properties | 6 +- src/main/resources/json.json | 115 ++++++++++++++++++ src/main/resources/templates/courses.html | 26 ++++ src/main/resources/templates/quiz.html | 32 +++++ 17 files changed, 524 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/example/init/controllers/CodeController.java create mode 100644 src/main/java/com/example/init/controllers/CourseController.java create mode 100644 src/main/java/com/example/init/controllers/QuizController.java create mode 100644 src/main/java/com/example/init/models/Code.java create mode 100644 src/main/java/com/example/init/models/Courses.java create mode 100644 src/main/java/com/example/init/models/Quiz.java create mode 100644 src/main/java/com/example/init/repositories/CodeRepositories.java create mode 100644 src/main/java/com/example/init/repositories/CourseRepository.java create mode 100644 src/main/resources/json.json create mode 100644 src/main/resources/templates/courses.html create mode 100644 src/main/resources/templates/quiz.html diff --git a/build.gradle b/build.gradle index 8a1b3cf..8d03cce 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,7 @@ dependencies { runtimeOnly 'org.postgresql:postgresql' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' + implementation 'com.google.code.gson:gson:2.8.8' } test { diff --git a/src/main/java/com/example/init/InitApplication.java b/src/main/java/com/example/init/InitApplication.java index 365f755..400e74e 100644 --- a/src/main/java/com/example/init/InitApplication.java +++ b/src/main/java/com/example/init/InitApplication.java @@ -8,6 +8,7 @@ public class InitApplication { public static void main(String[] args) { SpringApplication.run(InitApplication.class, args); + } } diff --git a/src/main/java/com/example/init/controllers/CodeController.java b/src/main/java/com/example/init/controllers/CodeController.java new file mode 100644 index 0000000..009f082 --- /dev/null +++ b/src/main/java/com/example/init/controllers/CodeController.java @@ -0,0 +1,8 @@ +package com.example.init.controllers; + +import org.springframework.stereotype.Controller; + +@Controller +public class CodeController { + +} diff --git a/src/main/java/com/example/init/controllers/CourseController.java b/src/main/java/com/example/init/controllers/CourseController.java new file mode 100644 index 0000000..95c0f73 --- /dev/null +++ b/src/main/java/com/example/init/controllers/CourseController.java @@ -0,0 +1,56 @@ +package com.example.init.controllers; + +import com.example.init.models.Courses; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.lang.reflect.Type; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.List; + +@Controller +public class CourseController { + + +// @Autowired +// CourseRepository courseRepository; + + + @GetMapping("/courses") + public String getCourses(Model model) throws Exception { + + Gson gson = new Gson(); + + JsonReader reader = new JsonReader(new FileReader("C:\\Users\\STUDENT\\java401\\SSD-Projects\\init\\src\\main\\resources\\json.json")); +// ArrayList courses= readJsonFile(courseFile); + Type jsonCasting = new TypeToken>() { + }.getType(); + List jsonList = gson.fromJson(reader, jsonCasting); +// Courses courses = new Courses(); +// courses.setTitle("hello from "); + model.addAttribute("courses" ,jsonList); +// courseRepository.save(courses); + return "courses"; + } + + + + + + + +// System.out.println("-------------------------------hello-----------------------------------------------------------------------"); +//// System.out.println(Courses.readJsonFile(courseFile)); +// System.out.println("--------------------------------after hello ----------------------------------------------------------------------"); +// System.out.println(jsonList.toString()); + + +} diff --git a/src/main/java/com/example/init/controllers/QuizController.java b/src/main/java/com/example/init/controllers/QuizController.java new file mode 100644 index 0000000..794de6b --- /dev/null +++ b/src/main/java/com/example/init/controllers/QuizController.java @@ -0,0 +1,41 @@ +package com.example.init.controllers; + +import com.example.init.models.Quiz; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.lang.reflect.Type; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +@Controller +public class QuizController { + + + + + @GetMapping("/quiz") + public String getQuiz(Model model) throws IOException { + Gson gson = new Gson(); + String urlApi = "https://quizapi.io/api/v1/questions?apiKey=phkL2Z69NDCrImLlfnLoElQkoF3StoJlQrAeKvkf&limit=10&css"; + HttpURLConnection connection = (HttpURLConnection) new URL(urlApi).openConnection(); + InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream()); + BufferedReader bufferedReader = new BufferedReader(inputStreamReader); + String data = bufferedReader.readLine(); + Type jsonCasting = new TypeToken>(){}.getType(); + List jsonList = gson.fromJson(data,jsonCasting); + model.addAttribute("quiz",jsonList); +// model.addAttribute("answers",jsonList); + bufferedReader.close(); + return "quiz"; + } +} diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index c870e2e..c128450 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -1,14 +1,11 @@ package com.example.init.controllers; -import antlr.BaseAST; import com.example.init.models.ApplicationUser; import com.example.init.repositories.ApplicationUserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -19,7 +16,6 @@ import java.security.Principal; import java.util.ArrayList; -import java.util.Optional; @Controller public class User { diff --git a/src/main/java/com/example/init/models/ApplicationUser.java b/src/main/java/com/example/init/models/ApplicationUser.java index 7f4ca18..a26537a 100644 --- a/src/main/java/com/example/init/models/ApplicationUser.java +++ b/src/main/java/com/example/init/models/ApplicationUser.java @@ -4,7 +4,9 @@ import org.springframework.security.core.userdetails.UserDetails; import javax.persistence.*; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; @Entity public class ApplicationUser implements UserDetails { @@ -25,6 +27,8 @@ public class ApplicationUser implements UserDetails { private String dateOfBirth; private String bio; + @OneToMany(mappedBy = "author" , fetch = FetchType.EAGER) + private List codes ; public ApplicationUser() { } diff --git a/src/main/java/com/example/init/models/Code.java b/src/main/java/com/example/init/models/Code.java new file mode 100644 index 0000000..8d9a88e --- /dev/null +++ b/src/main/java/com/example/init/models/Code.java @@ -0,0 +1,56 @@ +package com.example.init.models; + +import javax.persistence.*; + +@Entity +public class Code { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + private String title; + private String body; + + @ManyToOne + @JoinColumn(name = "author_id") + private ApplicationUser author; + + public ApplicationUser getAuthor() { + return author; + } + + public Code(Long id, String title, String body, ApplicationUser author) { + this.id = id; + this.title = title; + this.body = body; + this.author = author; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public void setAuthor(ApplicationUser author) { + this.author = author; + } +} diff --git a/src/main/java/com/example/init/models/Courses.java b/src/main/java/com/example/init/models/Courses.java new file mode 100644 index 0000000..367c694 --- /dev/null +++ b/src/main/java/com/example/init/models/Courses.java @@ -0,0 +1,108 @@ +package com.example.init.models; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; + +//import javax.persistence.*; +import javax.persistence.*; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; +// +@Entity +public class Courses { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; +// public int course_id; + public String title; + public String course_level; + public String description; + public String image; + + public Courses() throws Exception { + + } + + + public Courses(String title, String course_level, String description, String image) throws Exception { + this.title = title; + this.course_level = course_level; + this.description = description; + this.image = image; + + } + + + + // this is reader json file -------------------------- + public static ArrayList readJsonFile(FileReader jsonFile) { + // create Gson instance + Gson gson = new Gson(); + + // create a reader + BufferedReader reader = new BufferedReader(jsonFile); + + // convert JSON array to list of users + ArrayList courses = gson.fromJson(reader,new TypeToken>() {}.getType()); + + + System.out.println(courses); + return courses; + } + +// ------------------------------------ this is the End + + public Long getId() { + return id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getCourse_level() { + return course_level; + } + + public void setCourse_level(String course_level) { + this.course_level = course_level; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + + + + @Override + public String toString() { + return "Courses{" + + "title='" + title + '\'' + + ", description='" + description + '\'' + + ", image='" + image + '\'' + + '}'; + } +} diff --git a/src/main/java/com/example/init/models/Quiz.java b/src/main/java/com/example/init/models/Quiz.java new file mode 100644 index 0000000..bf4692f --- /dev/null +++ b/src/main/java/com/example/init/models/Quiz.java @@ -0,0 +1,53 @@ +package com.example.init.models; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + +import javax.persistence.*; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class Quiz { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; + + public String question; +// public String answers; + + public Quiz(String question) { + this.question = question; +// this.answers = answers; + } + + public Long getId() { + return id; + } + +// public String url = "https://quizapi.io/api/v1/questions?apiKey=phkL2Z69NDCrImLlfnLoElQkoF3StoJlQrAeKvkf&limit=5&css"; + + public Quiz() { + } + +// public String getAnswers() { +// return answers; +// } + +// public void setAnswers(String answers) { +// this.answers = answers; +// } + + public String getQuestion() { + return question; + } + + public void setQuestion(String question) { + this.question = question; + } + +} diff --git a/src/main/java/com/example/init/repositories/CodeRepositories.java b/src/main/java/com/example/init/repositories/CodeRepositories.java new file mode 100644 index 0000000..0ca8a04 --- /dev/null +++ b/src/main/java/com/example/init/repositories/CodeRepositories.java @@ -0,0 +1,10 @@ +package com.example.init.repositories; + +import com.example.init.models.Code; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface CodeRepositories extends JpaRepository { + +} diff --git a/src/main/java/com/example/init/repositories/CourseRepository.java b/src/main/java/com/example/init/repositories/CourseRepository.java new file mode 100644 index 0000000..338f5b1 --- /dev/null +++ b/src/main/java/com/example/init/repositories/CourseRepository.java @@ -0,0 +1,9 @@ +package com.example.init.repositories; + +import com.example.init.models.Courses; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface CourseRepository extends JpaRepository { +} diff --git a/src/main/java/com/example/init/security/WebSecurityConfig.java b/src/main/java/com/example/init/security/WebSecurityConfig.java index f72fb63..3b7cd93 100644 --- a/src/main/java/com/example/init/security/WebSecurityConfig.java +++ b/src/main/java/com/example/init/security/WebSecurityConfig.java @@ -33,7 +33,7 @@ protected void configure(HttpSecurity http) throws Exception { csrf() .disable() .authorizeRequests() - .antMatchers( "/login", "/signup","/") + .antMatchers( "/login", "/signup","/","/quiz") .permitAll().antMatchers("/adminpanel") .hasAuthority("ROLE_ADMIN") .anyRequest().authenticated() diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 30c62a3..ae3973a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,11 +2,11 @@ spring.datasource.hikari.connectionTimeout=20000 spring.datasource.hikari.maximumPoolSize=5 spring.sql.init.platform=postgres -spring.datasource.url=jdbc:postgresql://localhost:5433/init -spring.datasource.username=postgres +spring.datasource.url=jdbc:postgresql://localhost:5432/init +spring.datasource.username=mohammad spring.datasource.password=1234 -spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.hibernate.ddl-auto=update spring.datasource.initialization-mode=always spring.jpa.show-sql=true diff --git a/src/main/resources/json.json b/src/main/resources/json.json new file mode 100644 index 0000000..e1857cd --- /dev/null +++ b/src/main/resources/json.json @@ -0,0 +1,115 @@ +[ + { + "id": 1, + "school": "Donald Bren School of Information and Computer Sciences", + "title": "Interactive Technology Studio", + "course_level": "Graduate/Professional Only (200+)", + "description": "Technologies, languages, and skills required for creating prototypes to communicate interactive technology concepts. Topics include HTTP, CSS, CSS scripting, AJAX, Design Patterns, Javascript, Javascript libraries such as jQuery, SQL, MVC, and cloud architectures.", + "image":"https://united-pop.com/website/var/tmp/image-thumbnails/0/3214/thumb__diplomaCourseDetail/interactive_audio_designer~-~480w.jpeg"}, + { + "id": 2, + + "school": "Donald Bren School of Information and Computer Sciences", + "title": "Programming in Java as a Second Language", + "course_level": "Lower Division (1-99)", + + "description": "An introduction to the lexical, syntactic, semantic, and pragmatic characteristics of the Java language for experienced programmers. Emphasis on object-oriented programming, using standard libraries, and programming with automatic garbage collection.", + "image":"https://miro.medium.com/max/750/1*HuoU7i1AIvkUSApmIx8XQw.png"}, + { + "id": 3, + + "school": "Donald Bren School of Information and Computer Sciences", + "title": "Computer Game Development", + "course_level": "Graduate/Professional Only (200+)", + + "description": "Introduction to the principles of interactive 2D and 3D computer game development. Concepts in computer graphics, algorithms, software engineering, art and graphics, music and sound, story analysis, and artificial intelligence are presented and are the basis for student work.", +"image":"https://images.ctfassets.net/3s5io6mnxfqz/32WnMVURX2H9rRiNA1qbsg/a93ccb573ad78895d20bccbfdeece606/AdobeStock_345938875.jpeg?fm=jpg&w=900&fl=progressive"}, + { + "id": 4, + + "school": "Donald Bren School of Information and Computer Sciences", + "title": "Artificial Intelligence in Biology and Medicine", + "course_level": "Upper Division (100-199)", + + "description": "Introduction to computational methods in molecular biology, aimed at those interested in learning about this interdisciplinary area. Covers computational approaches to understanding and predicting the structure, function, interactions, and evolution of DNA, RNA, proteins, and related molecules and processes.", + "image" : "https://tedxashokau.com/wp-content/uploads/2020/10/Artificial-Intelligence.jpg" + }, + { + "id": 5, + + "school": "Donald Bren School of Information and Computer Sciences", + "title": "Digital Image Processing", + "course_level": "Upper Division (100-199)", + + "description": "Introduction to the fundamental concepts of digital signal and image processing as applicable in areas such as multimedia, graphics, AI, data mining, databases, vision, or video games. Topics include image representation, space- and frequency-domain transformations, filters, segmentation, and compression.", + "image" : "https://online.stanford.edu/sites/default/files/styles/figure_default/public/2018-03/ee_digitalimageprocessing_ee368.jpg?itok=S2vGmtU4" + }, + { + "id": 6, + + "school": "School of Physical Sciences", + "title": "Advanced Data Acquisition and Analysis", + "course_level": "Graduate/Professional Only (200+)", + + "description": "Introduces students to a variety of practical laboratory techniques, including lock-in, boxcar, coincidence counting, noise filtering, PID control, properties of common transducers, computer interfacing to instruments, vacuum technology, laboratory safety, basic mechanical design, and shop skills. Materials fee.", + "image" : "https://learn.g2.com/hubfs/what-is-advanced-analytics.jpg" + }, + { + "id": 7, + + "school": "Donald Bren School of Information and Computer Sciences", + "title": "Artificial Intelligence Frontiers: Technical, Ethical, and Societal", + "course_level": "Upper Division (100-199)", + + "description": "Explores the frontiers of artificial intelligence and related technologies with a focus on the underlying ethical, legal, and societal challenges and opportunities they create. Encourages critical thinking about these issues.", + "image" : "https://www.insurancejournal.com/app/uploads/2016/01/ethics-580x580.jpg" + }, + { + "id": 8, + + "school": "The Henry Samueli School of Engineering", + "title": "Biomedical Big Data", + "course_level": "Graduate/Professional Only (200+)", + + "description": "Analysis and visualization of large biomedical datasets. Topics covered include cloud computing, learning Structured Query Language (SQL), database normalization and joins, using Google’s BigQuery, using the statistical analysis package R, machine learning algorithms, application of machine learning for classification problems.", + "image" : "https://prod-discovery.edx-cdn.org/media/course/image/63f8ec13-8c6b-4c70-b380-3f95e56a21f6-d8de3c31749c.small.jpg" + }, + { + "id": 9, + + "school": "Donald Bren School of Information and Computer Sciences", + "title": "Network Security", + "course_level": "Graduate/Professional Only (200+)", + + "description": "Introduction to network security, including network threats and attacks, as well as defenses against such attacks. Topics include network infrastructure security, mobile and Wi-Fi security, spam, phishing, firewalls, anonymity, secure email, secure and private cloud computing, and web security.", + "image" : "https://images.anytask.com/resources/user/07b908f2cd365eec/task/1604585232973_secure.png"}, + { + "id":10 , + + "school": "Donald Bren School of Information and Computer Sciences", + "title": "Realistic Image Synthesis", + "course_level": "Graduate/Professional Only (200+)", + + "description": "Provides an in-depth overview on a core sub-field of computer graphics. Graduate students who take this course are better prepared for conducting research on the related topics in computer graphics, vision, and scientific computing.", + "image" : "https://pbs.twimg.com/media/DVZtj_GUQAAv6mp.jpg" + }, + { + "id": 11, + + "school": "The Henry Samueli School of Engineering", + "title": "Introduction to Programming", + "course_level": "Lower Division (1-99)", + "description": "An introduction to computers and programming. Python programming syntax/style, types. Numbers and sequences. Control flow. I/O and errors/exceptions. Function calling, parameter passing, formal arguments, return values. Variable scoping. Programming laboratory.", + "image" : "https://www.tuni.fi/sites/default/files/styles/base_landscape_lg/public/media/image/jop_pow_koodaus.png?itok=MbIrLPrF" + }, + { + "id": 12, + "school": "Donald Bren School of Information and Computer Sciences", + "title": "Project in Databases and Web Applications", + "course_level": "Upper Division (100-199)", + + "description": "Introduces students to advanced database technologies and Web applications. Topics include database connectivity (ODBC/JDBC), extending databases using stored procedures, database administration, Web servers, Web programming languages (Java servlets, XML, Ajax, and mobile platforms).", + "image" : "https://www.midaswebtech.com/wp-content/themes/midas_it/images/web-development.gif" + } + +] \ No newline at end of file diff --git a/src/main/resources/templates/courses.html b/src/main/resources/templates/courses.html new file mode 100644 index 0000000..8f6dba7 --- /dev/null +++ b/src/main/resources/templates/courses.html @@ -0,0 +1,26 @@ + + + + + Courses Page + + + + + + + + + +
+ +
+ +
+ + image +
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/quiz.html b/src/main/resources/templates/quiz.html new file mode 100644 index 0000000..5e39f28 --- /dev/null +++ b/src/main/resources/templates/quiz.html @@ -0,0 +1,32 @@ + + + + + Quiz Page + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + \ No newline at end of file From c6f72ff664382e2ad479fec893781c251b6ce80d Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Sun, 24 Oct 2021 23:42:30 +0300 Subject: [PATCH 08/21] add controller and profile for each user by id, all users, follow and feed initially done --- .../com/example/init/controllers/User.java | 14 ++++++- .../java/com/example/init/models/Coders.java | 12 +++--- .../init/repositories/CodersRepository.java | 2 +- src/main/resources/application.properties | 2 +- src/main/resources/templates/feed.html | 40 ++++-------------- src/main/resources/templates/home.html | 8 ---- src/main/resources/templates/user.html | 42 +++++++++++++++++++ src/main/resources/templates/users.html | 11 ++++- 8 files changed, 80 insertions(+), 51 deletions(-) create mode 100644 src/main/resources/templates/user.html diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index 17088ca..e42018b 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Controller; @@ -77,6 +78,15 @@ public RedirectView addPost(Principal principle, String body) { return new RedirectView("/profile"); } + @GetMapping("/user") + public String profile(@RequestParam long id, Model model, Principal principal) { + Coders user = codersRepository.findById(id).get(); + model.addAttribute("username", user.getUsername()); + model.addAttribute("userProfile", user); + model.addAttribute("logged", ((UsernamePasswordAuthenticationToken) principal).getPrincipal()); + return "user"; + } + @GetMapping("/users") public String getUsers(Model model, Principal principal) { List users = codersRepository.findAll(); @@ -87,7 +97,7 @@ public String getUsers(Model model, Principal principal) { } @PostMapping("/follow") - public RedirectView followUser(Coders user, @RequestParam Long id) { + public RedirectView followUser(@AuthenticationPrincipal Coders user, @RequestParam Long id) { Coders feed = codersRepository.findByUsername(user.getUsername()); Coders follow = codersRepository.findById(id).get(); feed.getFollowers().add(follow); @@ -96,7 +106,7 @@ public RedirectView followUser(Coders user, @RequestParam Long id) { } @GetMapping("/feed") - public String getUsersInfo(Coders user, Model model) { + public String getUsersInfo(@AuthenticationPrincipal Coders user, Model model) { Coders feed = codersRepository.findByUsername(user.getUsername()); List following = feed.getFollowers(); model.addAttribute("followers", following); diff --git a/src/main/java/com/example/init/models/Coders.java b/src/main/java/com/example/init/models/Coders.java index 075ee70..467c8b1 100644 --- a/src/main/java/com/example/init/models/Coders.java +++ b/src/main/java/com/example/init/models/Coders.java @@ -29,10 +29,10 @@ public class Coders implements UserDetails { @OneToMany(mappedBy = "applicationUser", fetch = FetchType.EAGER) private List posts; - @ManyToMany(cascade = { CascadeType.ALL }) + @ManyToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER) @JoinTable(name = "follower_follower", joinColumns = @JoinColumn(name = "from_id"), inverseJoinColumns = @JoinColumn(name = "to_id")) List followers = new ArrayList<>(); - @ManyToMany(mappedBy = "followers") + @ManyToMany(mappedBy = "followers", fetch = FetchType.EAGER) List following = new ArrayList<>(); public Coders() { @@ -51,22 +51,22 @@ public Coders(String email, String username, String password, String firstName, @Override public boolean isAccountNonExpired() { - return false; + return true; } @Override public boolean isAccountNonLocked() { - return false; + return true; } @Override public boolean isCredentialsNonExpired() { - return false; + return true; } @Override public boolean isEnabled() { - return false; + return true; } public void setUsername(String username) { diff --git a/src/main/java/com/example/init/repositories/CodersRepository.java b/src/main/java/com/example/init/repositories/CodersRepository.java index 6673df8..dde97d9 100644 --- a/src/main/java/com/example/init/repositories/CodersRepository.java +++ b/src/main/java/com/example/init/repositories/CodersRepository.java @@ -8,5 +8,5 @@ public interface CodersRepository extends JpaRepository { public Coders findByUsername(String username); - public Coders findUserById(Long id); + // public Coders findUserById(Long id); } \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 532a27b..06316f2 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,4 +4,4 @@ spring.datasource.username=abdelqader spring.datasource.password=0000 spring.jpa.database=postgresql spring.jpa.generate-ddl=true -spring.jpa.hibernate.ddl-auto=create-drop \ No newline at end of file +spring.jpa.hibernate.ddl-auto=update \ No newline at end of file diff --git a/src/main/resources/templates/feed.html b/src/main/resources/templates/feed.html index 636fe49..95ea331 100644 --- a/src/main/resources/templates/feed.html +++ b/src/main/resources/templates/feed.html @@ -6,48 +6,26 @@ > - Feed page
- -

Feed

+

Feed Posts

- Card image cap
Username:
-

- Profile

-
Posts:
-
    -
  • -
+

+

+
Posts:
+
    +
  • +
diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index 6b510d5..033f5e1 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -8,13 +8,5 @@

Hello World

- diff --git a/src/main/resources/templates/user.html b/src/main/resources/templates/user.html new file mode 100644 index 0000000..eb882c8 --- /dev/null +++ b/src/main/resources/templates/user.html @@ -0,0 +1,42 @@ + + + + + user profile + + + +
+ ProfilePicture +
+ +

+

+

+

+
+ +
+
+ + Posts + +
+
+
+

+

+
+
+
+ + diff --git a/src/main/resources/templates/users.html b/src/main/resources/templates/users.html index e811660..1c28abc 100644 --- a/src/main/resources/templates/users.html +++ b/src/main/resources/templates/users.html @@ -31,8 +31,15 @@

People You May Know

  • -
    - + + +
    From 119efcbf9c40d72236e2291cd702c7d9a3b14484 Mon Sep 17 00:00:00 2001 From: Jamal Eldeen Wari Date: Sun, 24 Oct 2021 23:55:42 +0300 Subject: [PATCH 09/21] adding some stuff to github --- build.gradle | 1 + .../init/controllers/QuizController.java | 71 ++++++++++++++++--- .../java/com/example/init/models/Quiz.java | 27 ++++++- .../java/com/example/init/models/QuizDTO.java | 70 ++++++++++++++++++ src/main/resources/application.properties | 6 +- src/main/resources/templates/quiz.html | 23 +++--- 6 files changed, 176 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/example/init/models/QuizDTO.java diff --git a/build.gradle b/build.gradle index 8d03cce..0e73eff 100644 --- a/build.gradle +++ b/build.gradle @@ -24,6 +24,7 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' implementation 'com.google.code.gson:gson:2.8.8' + implementation 'com.googlecode.json-simple:json-simple:1.1.1' } test { diff --git a/src/main/java/com/example/init/controllers/QuizController.java b/src/main/java/com/example/init/controllers/QuizController.java index 794de6b..b161504 100644 --- a/src/main/java/com/example/init/controllers/QuizController.java +++ b/src/main/java/com/example/init/controllers/QuizController.java @@ -1,21 +1,24 @@ package com.example.init.controllers; import com.example.init.models.Quiz; +import com.example.init.models.QuizDTO; import com.google.gson.Gson; +import com.google.gson.JsonElement; +import org.json.simple.JSONObject; +import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStreamReader; +import java.io.*; import java.lang.reflect.Type; import java.net.HttpURLConnection; import java.net.URL; -import java.util.ArrayList; -import java.util.List; +import java.util.*; @Controller public class QuizController { @@ -24,18 +27,70 @@ public class QuizController { @GetMapping("/quiz") - public String getQuiz(Model model) throws IOException { + public String getQuiz(Model model) throws IOException, ParseException { Gson gson = new Gson(); String urlApi = "https://quizapi.io/api/v1/questions?apiKey=phkL2Z69NDCrImLlfnLoElQkoF3StoJlQrAeKvkf&limit=10&css"; HttpURLConnection connection = (HttpURLConnection) new URL(urlApi).openConnection(); InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream()); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); +// String data = bufferedReader.readLine(); String data = bufferedReader.readLine(); Type jsonCasting = new TypeToken>(){}.getType(); List jsonList = gson.fromJson(data,jsonCasting); + List fromJson = gson.fromJson(data,jsonCasting); + + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("answers" , data); + model.addAttribute("answers" , jsonObject); + +// List jsonMap = Arrays.asList(gson.fromJson(data,Quiz[].class)); + + +// JSONParser jsonParser = new JSONParser(); +// Object ob = jsonParser.parse(data); +// JSONObject jsonObject = (JSONObject) ob{0}; +// String answers = (String) jsonObject.get("answers"); +// +// +// List jsonAnswers = Arrays.asList(gson.fromJson(answers,QuizDTO[].class)); + model.addAttribute("quiz",jsonList); -// model.addAttribute("answers",jsonList); + System.out.println(jsonList.toString()); + QuizDTO quizDTO = new QuizDTO(); +// System.out.println(data+" "+ jsonMap); +// List jsonMap = Arrays.asList(gson.fromJson(data,QuizDTO[].class)); +// JSONObject jsonObject = new JSONObject(); +// +// Map ans = new LinkedHashMap(6); +// ans.put("answer_a",quizDTO.getAnswer_a()); +// ans.put("answer_b",quizDTO.getAnswer_b()); +// ans.put("answer_c",quizDTO.getAnswer_c()); +// ans.put("answer_d",quizDTO.getAnswer_d()); +// ans.put("answer_e",quizDTO.getAnswer_e()); +// ans.put("answer_f",quizDTO.getAnswer_f()); +// jsonObject.toJSONString(jsonList) +// jsonObject.put("answers",ans); +// model.addAttribute("answers",jsonAnswers); bufferedReader.close(); return "quiz"; } +// @GetMapping("/quizAns") +// public String fetchAns(Model model){ +// QuizDTO quizDTO = new QuizDTO(); +// JsonObject jsonObject = new JsonObject(); +// Map ans = new LinkedHashMap(6); +// ans.put("answer_a",quizDTO.getAnswer_a()); +// ans.put("answer_b",quizDTO.getAnswer_b()); +// ans.put("answer_c",quizDTO.getAnswer_c()); +// ans.put("answer_d",quizDTO.getAnswer_d()); +// ans.put("answer_e",quizDTO.getAnswer_e()); +// ans.put("answer_f",quizDTO.getAnswer_f()); +// jsonObject.add("answers", (JsonElement) ans); +// model.addAttribute("answers",jsonObject); +// return "quiz"; +// +// } + + } diff --git a/src/main/java/com/example/init/models/Quiz.java b/src/main/java/com/example/init/models/Quiz.java index bf4692f..8fc2954 100644 --- a/src/main/java/com/example/init/models/Quiz.java +++ b/src/main/java/com/example/init/models/Quiz.java @@ -8,7 +8,9 @@ import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Entity public class Quiz { @@ -17,14 +19,37 @@ public class Quiz { @Column(name = "id", nullable = false) private Long id; +// public String answers; public String question; // public String answers; + public String answer_a; + public String answer_b; + public String answer_c; + public String answer_d; + public String answer_e; + public String answer_f; + +// public String getAnswers() { +// return answers; +// } +// +// public void setAnswers(String answers) { +// this.answers = answers; +// } - public Quiz(String question) { + public Quiz(String question, String answer_a, String answer_b, String answer_c, String answer_d, String answer_e, String answer_f) { this.question = question; // this.answers = answers; + this.answer_a = answer_a; + this.answer_b = answer_b; + this.answer_c = answer_c; + this.answer_d = answer_d; + this.answer_e = answer_e; + this.answer_f = answer_f; } + + public Long getId() { return id; } diff --git a/src/main/java/com/example/init/models/QuizDTO.java b/src/main/java/com/example/init/models/QuizDTO.java new file mode 100644 index 0000000..041cbcb --- /dev/null +++ b/src/main/java/com/example/init/models/QuizDTO.java @@ -0,0 +1,70 @@ +package com.example.init.models; + +public class QuizDTO { + private String answer_a; + private String answer_b; + private String answer_c; + private String answer_d; + private String answer_e; + private String answer_f; + + public QuizDTO() { + } + + public QuizDTO(String answer_a, String answer_b, String answer_c, String answer_d, String answer_e, String answer_f) { + this.answer_a = answer_a; + this.answer_b = answer_b; + this.answer_c = answer_c; + this.answer_d = answer_d; + this.answer_e = answer_e; + this.answer_f = answer_f; + } + + public String getAnswer_a() { + return answer_a; + } + + public void setAnswer_a(String answer_a) { + this.answer_a = answer_a; + } + + public String getAnswer_b() { + return answer_b; + } + + public void setAnswer_b(String answer_b) { + this.answer_b = answer_b; + } + + public String getAnswer_c() { + return answer_c; + } + + public void setAnswer_c(String answer_c) { + this.answer_c = answer_c; + } + + public String getAnswer_d() { + return answer_d; + } + + public void setAnswer_d(String answer_d) { + this.answer_d = answer_d; + } + + public String getAnswer_e() { + return answer_e; + } + + public void setAnswer_e(String answer_e) { + this.answer_e = answer_e; + } + + public String getAnswer_f() { + return answer_f; + } + + public void setAnswer_f(String answer_f) { + this.answer_f = answer_f; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index ae3973a..67434da 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,9 +2,9 @@ spring.datasource.hikari.connectionTimeout=20000 spring.datasource.hikari.maximumPoolSize=5 spring.sql.init.platform=postgres -spring.datasource.url=jdbc:postgresql://localhost:5432/init -spring.datasource.username=mohammad -spring.datasource.password=1234 +spring.datasource.url=jdbc:postgresql://localhost:5432/coders +spring.datasource.username=postgres +spring.datasource.password=12345 spring.jpa.hibernate.ddl-auto=update spring.datasource.initialization-mode=always diff --git a/src/main/resources/templates/quiz.html b/src/main/resources/templates/quiz.html index 5e39f28..5a67438 100644 --- a/src/main/resources/templates/quiz.html +++ b/src/main/resources/templates/quiz.html @@ -12,18 +12,21 @@ + +
    - - - - - - - - + + + + + + + + + - - + +
    From fd9ff100af1ee8623ceded9b224d6b34102a2f25 Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Tue, 26 Oct 2021 04:23:26 +0300 Subject: [PATCH 10/21] admin-panel and crud + little styling done --- .../com/example/init/controllers/User.java | 32 +++++ .../init/controllers/adminController.java | 86 ++++++++++++ .../init/repositories/CodersRepository.java | 2 +- .../init/repositories/ContentRepository.java | 3 + src/main/resources/templates/admin.html | 132 ++++++++++++++++++ src/main/resources/templates/navbar.html | 29 ++++ src/main/resources/templates/profile.html | 2 + src/main/resources/templates/putForm.html | 106 ++++++++++++++ src/main/resources/templates/updateForm.html | 19 +++ 9 files changed, 410 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/example/init/controllers/adminController.java create mode 100644 src/main/resources/templates/admin.html create mode 100644 src/main/resources/templates/navbar.html create mode 100644 src/main/resources/templates/putForm.html create mode 100644 src/main/resources/templates/updateForm.html diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index 80f4938..5a24f11 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -15,6 +15,7 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.view.RedirectView; @@ -23,6 +24,9 @@ import java.util.ArrayList; import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.transaction.Transactional; + @Controller public class User { @@ -112,4 +116,32 @@ public String getUsersInfo(@AuthenticationPrincipal Coders user, Model model) { model.addAttribute("followers", following); return "feed"; } + + @Transactional + @GetMapping("/delete/{id}") + public RedirectView deleteUserPost(@PathVariable String id, Principal principal, + Model model) { + Post post = contentRepository.findById(Long.parseLong(id)).orElseThrow(); + Coders user = codersRepository.findByUsername(principal.getName()); + model.addAttribute("username", principal.getName()); + model.addAttribute("userProfile", user); + contentRepository.delete(post); + return new RedirectView("/profile"); + } + + @GetMapping("/edit/{id}") + public String showUpdateForm(@PathVariable("id") long id, Model model) { + Post post = contentRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("Invalid user Id:" + id)); + model.addAttribute("post", post); + return "updateForm"; + } + + @PostMapping("/update/{id}") + public RedirectView updateUser(@PathVariable("id") long id, Post post) { + Post updatedPost = contentRepository.findById(id).orElseThrow(); + updatedPost.setBody(post.getBody()); + contentRepository.save(updatedPost); + return new RedirectView("/profile"); + } } diff --git a/src/main/java/com/example/init/controllers/adminController.java b/src/main/java/com/example/init/controllers/adminController.java new file mode 100644 index 0000000..c5fa318 --- /dev/null +++ b/src/main/java/com/example/init/controllers/adminController.java @@ -0,0 +1,86 @@ +package com.example.init.controllers; + +import java.security.Principal; +import java.util.List; + +import javax.transaction.Transactional; + +import com.example.init.models.Coders; +import com.example.init.repositories.CodersRepository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.view.RedirectView; + +@Controller +public class adminController { + @Autowired + CodersRepository codersRepository; + + @Autowired + BCryptPasswordEncoder bCryptPasswordEncoder; + + @GetMapping("/admin") + + String admin(Model model) { + List coders = codersRepository.findAll(); + model.addAttribute("coders", coders); + return "admin"; + } + + @PostMapping("/admin") + RedirectView addCoder(String email, String username, String password, String firstName, String lastName, + String dateOfBirth, String bio) { + + Coders newCoder = new Coders(email, username, bCryptPasswordEncoder.encode(password), firstName, lastName, + dateOfBirth, bio); + codersRepository.save(newCoder); + return new RedirectView("/admin"); + } + + @GetMapping("/coder") + public String getCoder(@RequestParam long id, Model model, Principal principal) { + Coders coder = codersRepository.findById(id).get(); + model.addAttribute("coder", coder); + return "coder"; + } + + @Transactional + @GetMapping("/del/{id}") + public RedirectView delete(@PathVariable String id, Principal principal, Model model) { + Coders coder = codersRepository.findById(Long.parseLong(id)).orElseThrow(); + model.addAttribute("coder", principal.getName()); + codersRepository.delete(coder); + return new RedirectView("/admin"); + } + + @GetMapping("/form/{id}") + public String showUpdateForm(@PathVariable("id") long id, Model model) { + Coders coder = codersRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("Invalid user Id:" + id)); + model.addAttribute("coder", coder); + return "putForm"; + } + + @Transactional + @PostMapping("/upd/{id}") + public RedirectView updateUser(@PathVariable("id") long id, Coders coder) { + Coders updatedCoder = codersRepository.findById(id).orElseThrow(); + updatedCoder.setEmail(coder.getEmail()); + updatedCoder.setUsername(coder.getUsername()); + updatedCoder.setPassword(coder.getPassword()); + updatedCoder.setFirstName(coder.getFirstName()); + updatedCoder.setLastName(coder.getLastName()); + updatedCoder.setDateOfBirth(coder.getDateOfBirth()); + updatedCoder.setBio(coder.getBio()); + codersRepository.save(updatedCoder); + return new RedirectView("/admin"); + } + +} \ No newline at end of file diff --git a/src/main/java/com/example/init/repositories/CodersRepository.java b/src/main/java/com/example/init/repositories/CodersRepository.java index dde97d9..6673df8 100644 --- a/src/main/java/com/example/init/repositories/CodersRepository.java +++ b/src/main/java/com/example/init/repositories/CodersRepository.java @@ -8,5 +8,5 @@ public interface CodersRepository extends JpaRepository { public Coders findByUsername(String username); - // public Coders findUserById(Long id); + public Coders findUserById(Long id); } \ No newline at end of file diff --git a/src/main/java/com/example/init/repositories/ContentRepository.java b/src/main/java/com/example/init/repositories/ContentRepository.java index e015895..5ea295f 100644 --- a/src/main/java/com/example/init/repositories/ContentRepository.java +++ b/src/main/java/com/example/init/repositories/ContentRepository.java @@ -7,4 +7,7 @@ @Repository public interface ContentRepository extends JpaRepository { public Post findPostById(Long id); + + // void deletePostByAppUser_UsernameAndId(String username, Long id); + } diff --git a/src/main/resources/templates/admin.html b/src/main/resources/templates/admin.html new file mode 100644 index 0000000..3bf03e9 --- /dev/null +++ b/src/main/resources/templates/admin.html @@ -0,0 +1,132 @@ + + + + + + + + Admin Panel + + +
    +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    IdFirst NameLast NameHandle
    + + 🖍 +
    +
    + + diff --git a/src/main/resources/templates/navbar.html b/src/main/resources/templates/navbar.html new file mode 100644 index 0000000..52033f1 --- /dev/null +++ b/src/main/resources/templates/navbar.html @@ -0,0 +1,29 @@ + diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index 48d79a4..2339215 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -40,6 +40,8 @@

    + Delete + Edit
    diff --git a/src/main/resources/templates/putForm.html b/src/main/resources/templates/putForm.html new file mode 100644 index 0000000..ab9c293 --- /dev/null +++ b/src/main/resources/templates/putForm.html @@ -0,0 +1,106 @@ + + + + + Update Form + + + +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    + +
    + + diff --git a/src/main/resources/templates/updateForm.html b/src/main/resources/templates/updateForm.html new file mode 100644 index 0000000..47ced67 --- /dev/null +++ b/src/main/resources/templates/updateForm.html @@ -0,0 +1,19 @@ + + + + + Update Form + + +
    + + + +
    + + From a903d2095c5610f9b3a3e10588ccbbaf7965d6d2 Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Tue, 26 Oct 2021 05:24:17 +0300 Subject: [PATCH 11/21] some style and edit --- src/main/resources/templates/Init.png | Bin 0 -> 422 bytes src/main/resources/templates/courses.html | 9 + .../templates/designFirstSection.png | Bin 0 -> 247293 bytes src/main/resources/templates/feed.html | 9 + src/main/resources/templates/home.html | 256 +++++++++++++++++- src/main/resources/templates/login.html | 54 ++-- src/main/resources/templates/nav.html | 40 +++ src/main/resources/templates/profile.html | 4 + src/main/resources/templates/putForm.html | 2 + src/main/resources/templates/quiz.html | 119 +++++--- src/main/resources/templates/updateForm.html | 2 + src/main/resources/templates/user.html | 2 + src/main/resources/templates/users.html | 2 + 13 files changed, 438 insertions(+), 61 deletions(-) create mode 100644 src/main/resources/templates/Init.png create mode 100644 src/main/resources/templates/designFirstSection.png create mode 100644 src/main/resources/templates/nav.html diff --git a/src/main/resources/templates/Init.png b/src/main/resources/templates/Init.png new file mode 100644 index 0000000000000000000000000000000000000000..0da98fb6442502b7cedf0734fc3e6175c534065e GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^9YCzW!3HExel@rVq&N#aB8wRqxP?KOkzv*x37{Zj zage(c!@6@aFM%AEbVpxD28NCO+^)>4(E9M8SKys#SHm{k zY7*me3TZGfU&SQzfT>H)S;Erm$9`t@(-!A~b9&$0tl1qG<@G=8@W&lifBxv^CdCv- ze7vcAd@_#!2Zst1(@M?kP`%d^^QK-3{~7zj?b^4^^_Tp&X?{AJxJ@vN@BaRqx29{~ zF|*~qx{UX@i1`A!d6qKT(rdTAJ0ZGg)7lK3m`v8Iid8OW?f6 znTEakAk#Y=9HeUa9|c`=st$E8e7~vg{`QmGrH)lU{wOMx9HN)gr=(D8RzCOW-s5NQ zmM+@7*HSKA(a_`VAvJFvh;Ai?31DXe4MJtkx}`qlSlOq)m!G%8Z2Awv+^;OXk;vd$@?2>`-BrMLh9 literal 0 HcmV?d00001 diff --git a/src/main/resources/templates/courses.html b/src/main/resources/templates/courses.html index 072ca64..76fcf91 100644 --- a/src/main/resources/templates/courses.html +++ b/src/main/resources/templates/courses.html @@ -3,8 +3,17 @@ Courses Page + + Admin Panel +
    + diff --git a/src/main/resources/templates/designFirstSection.png b/src/main/resources/templates/designFirstSection.png new file mode 100644 index 0000000000000000000000000000000000000000..032afa862e4a2d4ae8a081872996a5a252713f1c GIT binary patch literal 247293 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 by?Osb*!;>DXj%TapaLQf_u|y-X?2)yk^a)Y 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/templates/feed.html b/src/main/resources/templates/feed.html index 95ea331..2f9bb95 100644 --- a/src/main/resources/templates/feed.html +++ b/src/main/resources/templates/feed.html @@ -7,8 +7,17 @@ Feed page + + Admin Panel +
    +

    Feed Posts

    diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index 033f5e1..326452a 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -1,12 +1,262 @@ - + + - Hello + Init home + + + + + + + -

    Hello World

    + +
    + + + Login + +
    + +
    + + +
    + +
    +

    + Find your community and enjoy the process of learning + <coding/> +

    +
    + + +
    +
    + + +
    + designFirstSection +
    +
    +
    +
    +

    Why Init?

    +

    + Init will initialize you to get involved with the coding community. +

    +

    also it will provide you with everything you need to start.

    +
    +
    diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 1fbc38b..08989a4 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -1,29 +1,35 @@ - - - + + + login - - - -
    + + + + +
    Invalid username and password.
    +
    You have been logged out.
    -
    - Invalid username and password. -
    -
    - You have been logged out. -
    - -
    +
    - -
    -
    + +
    +
    - -
    - - - - \ No newline at end of file + +
    + + + + diff --git a/src/main/resources/templates/nav.html b/src/main/resources/templates/nav.html new file mode 100644 index 0000000..6315659 --- /dev/null +++ b/src/main/resources/templates/nav.html @@ -0,0 +1,40 @@ + diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index 2339215..6950d3d 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -6,6 +6,10 @@ + +
    + +
    ProfilePicture
    diff --git a/src/main/resources/templates/putForm.html b/src/main/resources/templates/putForm.html index ab9c293..f325b48 100644 --- a/src/main/resources/templates/putForm.html +++ b/src/main/resources/templates/putForm.html @@ -11,6 +11,8 @@ /> +
    +
    - - + + + + + Quiz Page - - - - - - - - -
    - -
    - -

    -

    -

    -

    -

    -

    - -

    -

    -

    -

    -

    -

    - < - - - + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Only Select The Correct Answers

    + + +
    + + +
    + +

    +
    + +
    + +

    +
    + +
    + +

    +
    + + + + + + + + + + + + + + + + +
    + + + + + +
    + + +
    +
    + + + + \ No newline at end of file diff --git a/src/main/resources/templates/updateForm.html b/src/main/resources/templates/updateForm.html index 47ced67..6631d73 100644 --- a/src/main/resources/templates/updateForm.html +++ b/src/main/resources/templates/updateForm.html @@ -5,6 +5,8 @@ Update Form +
    +
    +
    +
    Suggest Friends +
    + - -
    - - - Login - -
    - -
    - - -
    - -
    -

    - Find your community and enjoy the process of learning - <coding/> -

    -
    - - +
    + + + + Login + + +
    + + + +
    + + + +
    + + +
    +

    + Find your community and enjoy the process of learning <coding/> +

    +
    + + +
    +
    + + +
    + designFirstSection +
    + +
    +
    +
    +

    Why Init?

    +

    Init will initialize you to get involved with the coding community.

    +

    also it will provide you with everything you need to start.

    +
    +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + + + +
    +
    +

    Interactive

    +

    Init will help you to collaborate, share ideas, and get the help from other programmers.

    +
    + +
    + hands -
    -
    +
    + +
    + +
    + +
    + logo +
    + +
    +

    Quizes

    +

    Your coding and thinking skills will get better everyday, as we provide quizes for you to solve it and practice.

    +

    each quiz you solve you will git extra points, that you can use for buying courses from our website.

    - -
    - designFirstSection -
    -
    -
    -
    -

    Why Init?

    -

    - Init will initialize you to get involved with the coding community. -

    -

    also it will provide you with everything you need to start.

    -
    + + + + + + + + + +
    + + + + + - + \ No newline at end of file diff --git a/src/main/resources/templates/post.html b/src/main/resources/templates/post.html new file mode 100644 index 0000000..b871ca0 --- /dev/null +++ b/src/main/resources/templates/post.html @@ -0,0 +1,40 @@ + + + + + Title + + + +
    + + +
    +
    +

    +

    +
    +
    + + +
    +
    +

    + + + + +
    +
    +
    +

    +

    +
    +
    +
    + +
    + + + + diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index 6950d3d..8fb4835 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -48,6 +48,7 @@ Edit
    + From 6597a3dc5108f4888de28f5edb05c37e98c57a1f Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Tue, 26 Oct 2021 10:31:19 +0300 Subject: [PATCH 14/21] latests until start of tuesday --- .../init/controllers/QuizController.java | 35 ++++++++++++- .../java/com/example/init/models/Quiz.java | 3 ++ .../com/example/init/models/ResultsQuiz.java | 52 +++++++++++++++++++ .../example/init/repositories/ResultRepo.java | 9 ++++ src/main/resources/templates/result.html | 49 +++++++++++++++++ 5 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/example/init/models/ResultsQuiz.java create mode 100644 src/main/java/com/example/init/repositories/ResultRepo.java create mode 100644 src/main/resources/templates/result.html diff --git a/src/main/java/com/example/init/controllers/QuizController.java b/src/main/java/com/example/init/controllers/QuizController.java index f8fc358..40a4806 100644 --- a/src/main/java/com/example/init/controllers/QuizController.java +++ b/src/main/java/com/example/init/controllers/QuizController.java @@ -1,23 +1,42 @@ package com.example.init.controllers; +import com.example.init.models.ApplicationUser; import com.example.init.models.Quiz; +import com.example.init.models.ResultsQuiz; +import com.example.init.repositories.ApplicationUserRepository; +import com.example.init.repositories.CodersRepository; +import com.example.init.repositories.ResultsRepo; + import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import org.dom4j.rule.Mode; +import org.json.simple.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; import java.io.BufferedReader; +import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.Type; import java.net.HttpURLConnection; import java.net.URL; +import java.security.Principal; +import java.util.ArrayList; import java.util.List; @Controller public class QuizController { + @Autowired + ResultsRepo resultsRepo; + @Autowired + CodersRepository codersRepository; + @GetMapping("/quiz") public String getQuiz(Model model) throws IOException { Gson gson = new Gson(); @@ -33,4 +52,18 @@ public String getQuiz(Model model) throws IOException { bufferedReader.close(); return "quiz"; } -} \ No newline at end of file + + @PostMapping("/submit") + public String submit(Model model, Principal principal) { + ResultsQuiz resultsQuiz = new ResultsQuiz(); + // ApplicationUser applicationUser = new ApplicationUser(); + Quiz quiz = new Quiz(); + // resultsQuiz.setTotalCorrect(quiz.getAnswers()); + resultsQuiz.setUsername(codersRepository.findByUsername(principal.getName())); + resultsQuiz.setTotalCorrect(resultsQuiz.getTotalCorrect()); + model.addAttribute("quiz", resultsRepo.save(resultsQuiz)); + return "result"; + + } + +} diff --git a/src/main/java/com/example/init/models/Quiz.java b/src/main/java/com/example/init/models/Quiz.java index 602e8ab..ba5055f 100644 --- a/src/main/java/com/example/init/models/Quiz.java +++ b/src/main/java/com/example/init/models/Quiz.java @@ -17,6 +17,9 @@ public class Quiz { public String category; public String difficulty; + public Quiz() { + } + public Quiz(int id, String question, Object description, Answers answers, String multiple_correct_answers, CorrectAnswers correct_answers, String correct_answer, Object explanation, Object tip, List tags, String category, String difficulty) { diff --git a/src/main/java/com/example/init/models/ResultsQuiz.java b/src/main/java/com/example/init/models/ResultsQuiz.java new file mode 100644 index 0000000..2129bf1 --- /dev/null +++ b/src/main/java/com/example/init/models/ResultsQuiz.java @@ -0,0 +1,52 @@ +package com.example.init.models; + +import javax.persistence.*; + +@Entity +@Table(name = "results") +public class ResultsQuiz { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + // @Column(name = "id", nullable = false) + private int id; + @ManyToOne + @JoinColumn(name = "username_id") + public Coders username; + public int totalCorrect; + + public ResultsQuiz() { + } + + public ResultsQuiz(int id, Coders username, int totalCorrect) { + this.id = id; + this.username = username; + this.totalCorrect = totalCorrect; + } + + public int getId() { + return id; + } + + public Coders getUsername() { + return username; + } + + public void setUsername(Coders username) { + this.username = username; + } + + public int getTotalCorrect() { + return totalCorrect; + } + + public void setTotalCorrect(int totalCorrect) { + this.totalCorrect = totalCorrect; + } + // public Long getId() { + // return id; + // } + // + // public void setId(Long id) { + // this.id = id; + // } +} diff --git a/src/main/java/com/example/init/repositories/ResultRepo.java b/src/main/java/com/example/init/repositories/ResultRepo.java new file mode 100644 index 0000000..a9b61c4 --- /dev/null +++ b/src/main/java/com/example/init/repositories/ResultRepo.java @@ -0,0 +1,9 @@ +package com.example.init.repositories; + +import com.example.init.models.ResultsQuiz; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ResultsRepo extends JpaRepository { +} diff --git a/src/main/resources/templates/result.html b/src/main/resources/templates/result.html new file mode 100644 index 0000000..c4305ba --- /dev/null +++ b/src/main/resources/templates/result.html @@ -0,0 +1,49 @@ + + + + + Result Page + + +
    +
    +

    Your Score

    + +
    +

    +
    + +
    +

    Total correct answer:  

    +

    +
    + +
    +

    Total false answer:  

    +

    +
    + +
    + + +
    +
    +
    + + From 4d28e71f12f8c471b0097d31d69b7163b31262eb Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Tue, 26 Oct 2021 10:53:27 +0300 Subject: [PATCH 15/21] tuesday --- .../java/com/example/init/controllers/QuizController.java | 7 ------- src/main/java/com/example/init/controllers/User.java | 4 +++- .../repositories/{ResultRepo.java => ResultsRepo.java} | 0 3 files changed, 3 insertions(+), 8 deletions(-) rename src/main/java/com/example/init/repositories/{ResultRepo.java => ResultsRepo.java} (100%) diff --git a/src/main/java/com/example/init/controllers/QuizController.java b/src/main/java/com/example/init/controllers/QuizController.java index 40a4806..2681886 100644 --- a/src/main/java/com/example/init/controllers/QuizController.java +++ b/src/main/java/com/example/init/controllers/QuizController.java @@ -1,32 +1,25 @@ package com.example.init.controllers; -import com.example.init.models.ApplicationUser; import com.example.init.models.Quiz; import com.example.init.models.ResultsQuiz; -import com.example.init.repositories.ApplicationUserRepository; import com.example.init.repositories.CodersRepository; import com.example.init.repositories.ResultsRepo; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import org.dom4j.rule.Mode; -import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import java.io.BufferedReader; -import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.Type; import java.net.HttpURLConnection; import java.net.URL; import java.security.Principal; -import java.util.ArrayList; import java.util.List; @Controller diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index 733c519..4480db6 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -25,6 +25,8 @@ import java.security.Principal; import java.util.ArrayList; import java.util.List; +import java.util.Set; + import javax.transaction.Transactional; @Controller @@ -115,7 +117,7 @@ public RedirectView followUser(@AuthenticationPrincipal Coders user, @RequestPar @GetMapping("/feed") public String getUsersInfo(@AuthenticationPrincipal Coders user, Model model) { Coders feed = codersRepository.findByUsername(user.getUsername()); - List following = feed.getFollowers(); + Set following = feed.getFollowers(); model.addAttribute("followers", following); return "feed"; } diff --git a/src/main/java/com/example/init/repositories/ResultRepo.java b/src/main/java/com/example/init/repositories/ResultsRepo.java similarity index 100% rename from src/main/java/com/example/init/repositories/ResultRepo.java rename to src/main/java/com/example/init/repositories/ResultsRepo.java From 50a5127c42bb1fc5a6683a03fd6139e316fe21ca Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Tue, 26 Oct 2021 13:18:18 +0300 Subject: [PATCH 16/21] editor --- build.gradle | 7 ++ ...inController.java => AdminController.java} | 2 +- .../init/controllers/EditorController.java | 26 +++++ .../java/com/example/init/models/Editor.java | 14 +++ src/main/resources/templates/editor.html | 104 ++++++++++++++++++ src/main/resources/templates/saved.html | 65 +++++++++++ 6 files changed, 217 insertions(+), 1 deletion(-) rename src/main/java/com/example/init/controllers/{adminController.java => AdminController.java} (99%) create mode 100644 src/main/java/com/example/init/controllers/EditorController.java create mode 100644 src/main/java/com/example/init/models/Editor.java create mode 100644 src/main/resources/templates/editor.html create mode 100644 src/main/resources/templates/saved.html diff --git a/build.gradle b/build.gradle index 0e73eff..a330e86 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,13 @@ dependencies { testImplementation 'org.springframework.security:spring-security-test' implementation 'com.google.code.gson:gson:2.8.8' implementation 'com.googlecode.json-simple:json-simple:1.1.1' + compileOnly 'org.projectlombok:lombok:1.18.22' + annotationProcessor 'org.projectlombok:lombok:1.18.22' + + testCompileOnly 'org.projectlombok:lombok:1.18.22' + testAnnotationProcessor 'org.projectlombok:lombok:1.18.22' + + } test { diff --git a/src/main/java/com/example/init/controllers/adminController.java b/src/main/java/com/example/init/controllers/AdminController.java similarity index 99% rename from src/main/java/com/example/init/controllers/adminController.java rename to src/main/java/com/example/init/controllers/AdminController.java index c5fa318..495455e 100644 --- a/src/main/java/com/example/init/controllers/adminController.java +++ b/src/main/java/com/example/init/controllers/AdminController.java @@ -19,7 +19,7 @@ import org.springframework.web.servlet.view.RedirectView; @Controller -public class adminController { +public class AdminController { @Autowired CodersRepository codersRepository; diff --git a/src/main/java/com/example/init/controllers/EditorController.java b/src/main/java/com/example/init/controllers/EditorController.java new file mode 100644 index 0000000..62d7618 --- /dev/null +++ b/src/main/java/com/example/init/controllers/EditorController.java @@ -0,0 +1,26 @@ +package com.example.init.controllers; + +import com.example.init.models.Editor; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; + +@Controller +public class EditorController { + + @GetMapping("/editor") + public String editor(Model model) { + + model.addAttribute("editor", new Editor()); + return "editor"; + } + + @PostMapping("/editor") + public String save(Editor editor, Model model) { + + model.addAttribute("editor", editor); + return "saved"; + } +} diff --git a/src/main/java/com/example/init/models/Editor.java b/src/main/java/com/example/init/models/Editor.java new file mode 100644 index 0000000..235e703 --- /dev/null +++ b/src/main/java/com/example/init/models/Editor.java @@ -0,0 +1,14 @@ +package com.example.init.models; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@NoArgsConstructor +public class Editor { + + private String title; + private String content; +} diff --git a/src/main/resources/templates/editor.html b/src/main/resources/templates/editor.html new file mode 100644 index 0000000..7a2b4f5 --- /dev/null +++ b/src/main/resources/templates/editor.html @@ -0,0 +1,104 @@ + + + + + + Spring Boot Thymeleaf Application - Bootstrap Rich Text Editor + + + + + + + + + +
    +
    +
    +
    +
    + + +
    + +
    + + +
    + + +
    +
    +
    +
    + + + + + + + + + diff --git a/src/main/resources/templates/saved.html b/src/main/resources/templates/saved.html new file mode 100644 index 0000000..d787fc7 --- /dev/null +++ b/src/main/resources/templates/saved.html @@ -0,0 +1,65 @@ + + + + + + Spring Boot Thymeleaf Application - Bootstrap Rich Text Editor + + + + + + + + +
    +
    +
    +

    Title

    +
    Content
    + + Go back +
    +
    +
    + + From 50f745dc511bbb69e788ec42fa3a2a657f4d8641 Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Tue, 26 Oct 2021 16:35:18 +0300 Subject: [PATCH 17/21] working on editor + render comments on profile done --- .../com/example/init/controllers/User.java | 25 +++- src/main/resources/templates/editor.html | 104 ----------------- src/main/resources/templates/post.html | 9 -- src/main/resources/templates/profile.html | 24 +++- .../resources/templates/userInfoForm.html | 108 ++++++++++++++++++ 5 files changed, 155 insertions(+), 115 deletions(-) delete mode 100644 src/main/resources/templates/editor.html create mode 100644 src/main/resources/templates/userInfoForm.html diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index 4480db6..8bd2535 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -151,12 +151,13 @@ public RedirectView updateUser(@PathVariable("id") long id, Post post) { @PostMapping("/addComment") public RedirectView addComment(Long id, String body) { + Post post = contentRepository.findById(id).get(); System.out.println(post.getBody()); Comment comment = new Comment(post, body); commentRepository.save(comment); System.out.println(comment.getBody()); - return new RedirectView("/post"); + return new RedirectView("/profile"); } @GetMapping("/post") @@ -166,4 +167,26 @@ public String getPost(Model model, @AuthenticationPrincipal Coders user) { return "post"; } + @GetMapping("/UserForm/{id}") + public String updateInfo(@PathVariable("id") long id, Model model) { + Coders coder = codersRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("Invalid user Id:" + id)); + model.addAttribute("coder", coder); + return "userInfoForm"; + } + + @Transactional + @PostMapping("/updateInfo/{id}") + public RedirectView updateInfo(@PathVariable("id") long id, Coders coder) { + Coders updatedCoder = codersRepository.findById(id).orElseThrow(); + updatedCoder.setEmail(coder.getEmail()); + updatedCoder.setUsername(coder.getUsername()); + updatedCoder.setPassword(coder.getPassword()); + updatedCoder.setFirstName(coder.getFirstName()); + updatedCoder.setLastName(coder.getLastName()); + updatedCoder.setDateOfBirth(coder.getDateOfBirth()); + updatedCoder.setBio(coder.getBio()); + codersRepository.save(updatedCoder); + return new RedirectView("/profile"); + } } diff --git a/src/main/resources/templates/editor.html b/src/main/resources/templates/editor.html deleted file mode 100644 index 7a2b4f5..0000000 --- a/src/main/resources/templates/editor.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - Spring Boot Thymeleaf Application - Bootstrap Rich Text Editor - - - - - - - - - -
    -
    -
    -
    -
    - - -
    - -
    - - -
    - - -
    -
    -
    -
    - - - - - - - - - diff --git a/src/main/resources/templates/post.html b/src/main/resources/templates/post.html index b871ca0..1b353ff 100644 --- a/src/main/resources/templates/post.html +++ b/src/main/resources/templates/post.html @@ -24,15 +24,6 @@ -
    -
    -
    -

    -

    -
    -
    -
    - diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index 8fb4835..c4146cf 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -17,6 +17,8 @@

    +

    @@ -48,8 +50,28 @@ Edit
    - + + +
    +
    +
    +

    +

    +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/userInfoForm.html b/src/main/resources/templates/userInfoForm.html new file mode 100644 index 0000000..65e9a8c --- /dev/null +++ b/src/main/resources/templates/userInfoForm.html @@ -0,0 +1,108 @@ + + + + + Update Form + + + +
    + +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    + +
    + + From 6f3dc34c86e617a9f07bd6fa532c4438afff652a Mon Sep 17 00:00:00 2001 From: abdelqader-alomari Date: Tue, 26 Oct 2021 22:39:38 +0300 Subject: [PATCH 18/21] latest updates --- .../com/example/init/controllers/User.java | 2 +- src/main/resources/templates/profile.html | 353 +++++++++++++++--- src/main/resources/templates/user.html | 329 ++++++++++++++-- src/main/resources/templates/users.html | 10 +- 4 files changed, 592 insertions(+), 102 deletions(-) diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index 8bd2535..58c2e5e 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -157,7 +157,7 @@ public RedirectView addComment(Long id, String body) { Comment comment = new Comment(post, body); commentRepository.save(comment); System.out.println(comment.getBody()); - return new RedirectView("/profile"); + return new RedirectView("profile"); } @GetMapping("/post") diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index c4146cf..23567f9 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -1,77 +1,310 @@ - + user profile + + + + + - -
    - -
    -
    - ProfilePicture - - -
    -
    - -
    -
    -
    - - -
    - + +
    +
    +
    + hero
    -
    -
    - -
    -
    - -Posts - -
    -
    -
    -

    -

    - Delete - Edit + +
    +
    + profile-pic +

    + + +

    +

    Date of Birth

    +

    +

    Bio

    +
    +

    +
    -
    + +

    Posts

    +
    +
    + +
    +
    + + +
    + +
    +
    + +
    +
    + + +
    +
    + + +

    +
    +

    +

    + Delete + Edit +
    + +
    +
    +

    +

    +
    +
    + + +
    + + +
    +
    + + -
    -
    -
    -

    -

    -
    - - - - - - - + \ No newline at end of file diff --git a/src/main/resources/templates/user.html b/src/main/resources/templates/user.html index 0b0e30e..46218a1 100644 --- a/src/main/resources/templates/user.html +++ b/src/main/resources/templates/user.html @@ -1,44 +1,295 @@ - - - + + + user profile - - - -
    - -
    - ProfilePicture -
    - -

    -

    -

    -

    + + + + + + + + +
    + - -
    -
    - - Posts - -
    -
    -
    -

    -

    +
    +
    +
    +
    + hero
    -
    +
    +
    +
    + profile-pic +

    + + +

    +

    Date of Birth

    +

    +

    Bio

    +
    +

    +
    +
    +
    +

    Posts

    +
    +
    + + +
    + + +

    +
    +

    +

    +
    + +
    +
    +

    +

    +
    +
    + + +
    + + +
    +
    + + + + +
    - - + + + + \ No newline at end of file diff --git a/src/main/resources/templates/users.html b/src/main/resources/templates/users.html index 4093215..4ce87b7 100644 --- a/src/main/resources/templates/users.html +++ b/src/main/resources/templates/users.html @@ -26,10 +26,12 @@

    People You May Know


    From 03716b13984dd7d4bf4ebaf017a4b771fa510429 Mon Sep 17 00:00:00 2001 From: nawal-ahmad Date: Wed, 27 Oct 2021 10:09:26 +0300 Subject: [PATCH 19/21] create json file with khair and solving the comments duplicate issue with heba and mohammad --- .../com/example/init/controllers/User.java | 32 +++++++++++++------ .../java/com/example/init/models/Coders.java | 11 +++---- src/main/resources/application.properties | 6 ++-- src/main/resources/templates/profile.html | 3 -- src/main/resources/templates/user.html | 17 ++++------ 5 files changed, 36 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index 58c2e5e..a35547b 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -150,22 +150,23 @@ public RedirectView updateUser(@PathVariable("id") long id, Post post) { } @PostMapping("/addComment") - public RedirectView addComment(Long id, String body) { - + public RedirectView addComment(Long id, String body, Coders coders) { Post post = contentRepository.findById(id).get(); - System.out.println(post.getBody()); + Long userId = post.getApplicationUser().getId(); + System.out.println(userId); Comment comment = new Comment(post, body); commentRepository.save(comment); + System.out.println(comment.getBody()); - return new RedirectView("profile"); + return new RedirectView("user/?id="+userId); } - @GetMapping("/post") - public String getPost(Model model, @AuthenticationPrincipal Coders user) { - List posts = (List) codersRepository.findByUsername(user.getUsername()).getPosts(); - model.addAttribute("posts", posts); - return "post"; - } +// @GetMapping("/post") +// public String getPost(Model model, @AuthenticationPrincipal Coders user) { +// List posts = (List) codersRepository.findByUsername(user.getUsername()).getPosts(); +// model.addAttribute("posts", posts); +// return "post"; +// } @GetMapping("/UserForm/{id}") public String updateInfo(@PathVariable("id") long id, Model model) { @@ -189,4 +190,15 @@ public RedirectView updateInfo(@PathVariable("id") long id, Coders coder) { codersRepository.save(updatedCoder); return new RedirectView("/profile"); } + +// @PostMapping("/addCommentToOther") +// public RedirectView addCommentToOther(Long id, String body,Principal principal) { +// Post post = contentRepository.findById(id).get(); +// Coders coder1 = codersRepository.findById(id).get(); +// System.out.println(post.getBody()); +// Comment comment = new Comment(post, body); +// commentRepository.save(comment); +// System.out.println(comment.getBody()); +// return new RedirectView("/user/?id=8"); +// } } diff --git a/src/main/java/com/example/init/models/Coders.java b/src/main/java/com/example/init/models/Coders.java index 1643c05..5613b5e 100644 --- a/src/main/java/com/example/init/models/Coders.java +++ b/src/main/java/com/example/init/models/Coders.java @@ -3,10 +3,7 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import javax.persistence.*; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; +import java.util.*; @Entity public class Coders implements UserDetails { @@ -27,7 +24,7 @@ public class Coders implements UserDetails { private String bio; @OneToMany(mappedBy = "applicationUser", fetch = FetchType.EAGER) - private List posts; + private Set posts; @ManyToMany @JoinTable(name = "follower_follower", joinColumns = @JoinColumn(name = "from_id"), inverseJoinColumns = @JoinColumn(name = "to_id")) @@ -140,11 +137,11 @@ public void setBio(String bio) { this.bio = bio; } - public List getPosts() { + public Set getPosts() { return posts; } - public void setPosts(List posts) { + public void setPosts(Set posts) { this.posts = posts; } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f03a366..6a4905d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,7 @@ spring.sql.init.platform=postgres -spring.datasource.url=jdbc:postgresql://localhost:5432/coders -spring.datasource.username=abdelqader -spring.datasource.password=0000 +spring.datasource.url=jdbc:postgresql://localhost:5433/init +spring.datasource.username=postgres +spring.datasource.password=1234 spring.jpa.database=postgresql spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto=update diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index 23567f9..c44d9b5 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -299,12 +299,9 @@

    - - - \ No newline at end of file diff --git a/src/main/resources/templates/user.html b/src/main/resources/templates/user.html index 46218a1..8fcf38f 100644 --- a/src/main/resources/templates/user.html +++ b/src/main/resources/templates/user.html @@ -263,8 +263,8 @@

    - -

    + +

    @@ -277,19 +277,16 @@

    - -
    - - -
    +
    + + +
    + - -
    - \ No newline at end of file From 28903109d179ec88d650d6546f4a6e84d52629db Mon Sep 17 00:00:00 2001 From: Heba1998 Date: Wed, 27 Oct 2021 11:49:09 +0300 Subject: [PATCH 20/21] delete folloe button for the i followed and remove logged user from users with nawal --- src/main/java/com/example/init/controllers/User.java | 4 +++- src/main/resources/application.properties | 4 ++-- src/main/resources/templates/profile.html | 6 +++--- src/main/resources/templates/user.html | 10 +++++----- src/main/resources/templates/users.html | 10 ++++++---- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/example/init/controllers/User.java b/src/main/java/com/example/init/controllers/User.java index a35547b..0d68344 100644 --- a/src/main/java/com/example/init/controllers/User.java +++ b/src/main/java/com/example/init/controllers/User.java @@ -102,6 +102,8 @@ public String getUsers(Model model, Principal principal) { model.addAttribute("allusers", users); Coders user = codersRepository.findByUsername(principal.getName()); model.addAttribute("username", user.getUsername()); + model.addAttribute("logged", ((UsernamePasswordAuthenticationToken) principal).getPrincipal()); +model.addAttribute("whoIFollow", user.getFollowers()); return "users"; } @@ -111,7 +113,7 @@ public RedirectView followUser(@AuthenticationPrincipal Coders user, @RequestPar Coders follow = codersRepository.findById(id).get(); feed.getFollowers().add(follow); codersRepository.save(feed); - return new RedirectView("/feed"); + return new RedirectView("/users"); } @GetMapping("/feed") diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6a4905d..7ea4eef 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,6 +1,6 @@ spring.sql.init.platform=postgres -spring.datasource.url=jdbc:postgresql://localhost:5433/init -spring.datasource.username=postgres +spring.datasource.url=jdbc:postgresql://localhost:5432/postgres +spring.datasource.username= postgres spring.datasource.password=1234 spring.jpa.database=postgresql spring.jpa.generate-ddl=true diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index c44d9b5..2d5d1b3 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -214,15 +214,15 @@ homeIcon - + messages - + quizes - + courses diff --git a/src/main/resources/templates/user.html b/src/main/resources/templates/user.html index 8fcf38f..7bc2eb2 100644 --- a/src/main/resources/templates/user.html +++ b/src/main/resources/templates/user.html @@ -210,23 +210,23 @@ logo - + homeIcon - + messages - + quizes - + courses - + profileIcon diff --git a/src/main/resources/templates/users.html b/src/main/resources/templates/users.html index 4ce87b7..b33e4ab 100644 --- a/src/main/resources/templates/users.html +++ b/src/main/resources/templates/users.html @@ -25,17 +25,19 @@

    People You May Know


    -
      +
        - + + + -
      • +
      • -
        +