Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,11 @@
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
Expand All @@ -75,6 +76,15 @@

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,9 @@ public String configContaGet(UsuarioDTOConta usuarioDTO, MultipartFile file){
public String configSenha(String antigaSenha, String novaSenha){

Usuario myUser = principalUserService.get();
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();

if(new BCryptPasswordEncoder().matches(myUser.getPassword(), antigaSenha)){
if(bCryptPasswordEncoder.matches(antigaSenha, myUser.getPassword())){

myUser.setSenha(new BCryptPasswordEncoder(8).encode(novaSenha));

Expand Down
11 changes: 8 additions & 3 deletions src/main/java/com/social/bubble/controller/LoginController.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,21 @@
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/login")
public class LoginController {

//tela de login com validação spring security
@RequestMapping(value = "/", method = RequestMethod.GET)

@RequestMapping(value = "/login/", method = RequestMethod.GET)
public ModelAndView loginGet(){
return new ModelAndView("home/login");
}

@RequestMapping(value = "/", method = RequestMethod.POST)
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView standard(){
return new ModelAndView("redirect:/login/");
}

@RequestMapping(value = "/login/", method = RequestMethod.POST)
public ModelAndView loginPost(){
return new ModelAndView("redirect:/perfil/meuPerfil");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.social.bubble.service.UsuarioService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
Expand Down Expand Up @@ -83,4 +84,11 @@ ModelAndView carregarNumComentarios(@PathVariable("id") long id){
modelAndView.addObject("post", postagemService.findById(id));
return modelAndView;
}

@RequestMapping(value = "/content/alert/{name}/{msg}", method = RequestMethod.GET)
ModelAndView carregarAlert(@PathVariable("name") String name, @PathVariable("msg") String msg){
ModelAndView modelAndView = new ModelAndView("replace/base :: alert");
modelAndView.addObject(name, msg);
return modelAndView;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ public class SecurityWebConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests().anyRequest().permitAll()
.authorizeRequests().antMatchers("/login/","/cadastro/").permitAll()
.and().authorizeRequests().antMatchers(
"/homePage/**","/perfil/**","/config/**","/bubbleChat/**","/pesquisa/**"
).authenticated()
.and().headers().frameOptions().sameOrigin()
.and().formLogin().loginPage("/login/").successForwardUrl("/login/").permitAll()
.and().logout().permitAll().logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
Expand Down
18 changes: 7 additions & 11 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
# database configs
spring.datasource.url=jdbc:mysql://localhost:3306/api?useTimezone=true&serverTimezone=America/Sao_Paulo
spring.datasource.username=root
spring.datasource.password=scope227
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

12 changes: 12 additions & 0 deletions src/main/resources/static/assets/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,18 @@
margin-top:25px;
}

.margin-top-2{
margin-top:50px;
}

.margin-top-3{
margin-top:75px;
}

.margin-top-4{
margin-top:100px;
}

.container-img {
border: 1px black;
width: 100%;
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/templates/home/cadastro.html
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
<i class="material-icons">add_a_photo</i>
</span>
</div>
<input type="file" class="form-control" name="file" placeholder="Foto de perfil" accept="image/png/jpg/jpeg/jfif">
<input type="file" class="form-control" name="file" placeholder="Foto de perfil" accept="image/png/jpg/jpeg/jfif" required>
</div>
</span>
</div>
Expand Down
116 changes: 67 additions & 49 deletions src/main/resources/templates/replace/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,83 +55,101 @@
</nav>

<!--fragmentos de alerta-->
<div th:fragment="alert">
<div th:fragment="alert" id="alert">

<!--notificacao info-->
<div th:if="${info != null}" class="alert alert-info">
<div class="container">
<div class="alert-icon">
<i class="material-icons">info_outline</i>
<div th:if="${info != null}">
<div class="margin-top-3"></div>
<div class="alert alert-info fixed-top margin-top-3">
<div class="container">
<div class="alert-icon">
<i class="material-icons">info_outline</i>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Info:</b> <span th:text="${info}"></span>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Info:</b> <span th:text="${info}"></span>
</div>
</div>

<!--sucess info-->
<div th:if="${sucess != null}" class="alert alert-success">
<div class="container">
<div class="alert-icon">
<i class="material-icons">check</i>
<div th:if="${sucess != null}">
<div class="margin-top-3"></div>
<div class="alert alert-success fixed-top margin-top-3">
<div class="container">
<div class="alert-icon">
<i class="material-icons">check</i>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Success:</b> <span th:text="${sucess}"></span>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Success:</b> <span th:text="${sucess}"></span>
</div>
</div>

<!--sucess info-->
<div th:if="${param.logout != null}" class="alert alert-success">
<div class="container">
<div class="alert-icon">
<i class="material-icons">check</i>
<div th:if="${param.logout != null}">
<div class="margin-top-3"></div>
<div class="alert alert-success fixed-top margin-top-3">
<div class="container">
<div class="alert-icon">
<i class="material-icons">check</i>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Success:</b> Deslogado com sucesso!.
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Success:</b> Deslogado com sucesso!.
</div>
</div>

<!--warning info-->
<div th:if="${warning != null}" class="alert alert-warning">
<div class="container">
<div class="alert-icon">
<i class="material-icons">warning</i>
<div th:if="${warning != null}">
<div class="margin-top-3"></div>
<div class="alert alert-warning fixed-top margin-top-3">
<div class="container">
<div class="alert-icon">
<i class="material-icons">warning</i>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Warning:</b> <span th:text="${warning}"></span>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Warning:</b> <span th:text="${warning}"></span>
</div>
</div>

<!--warning info-->
<div th:if="${param.error != null}" class="alert alert-warning">
<div class="container">
<div class="alert-icon">
<i class="material-icons">warning</i>
<div th:if="${param.error != null}">
<div class="margin-top-3"></div>
<div class="alert alert-warning fixed-top margin-top-3">
<div class="container">
<div class="alert-icon">
<i class="material-icons">warning</i>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Warning:</b> Usuário ou senha incorreta!.
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Warning:</b> Usuário ou senha incorreta!.
</div>
</div>

<!--danger info-->
<div th:if="${danger != null}" class="alert alert-danger">
<div class="container">
<div class="alert-icon">
<i class="material-icons">error_outline</i>
<div th:if="${danger != null}">
<div class="margin-top-3"></div>
<div class="alert alert-danger fixed-top margin-top-3">
<div class="container">
<div class="alert-icon">
<i class="material-icons">error_outline</i>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Danger:</b> <span th:text="${danger}"></span>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true"><i class="material-icons">clear</i></span>
</button>
<b>Danger:</b> <span th:text="${danger}"></span>
</div>
</div>
<div class="clearfix"></div>
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/templates/replace/pack-postagem.html
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,13 @@ <h5 class="modal-title">Deseja realmente excluir essa postagem?</h5>
<div class="header">
<!--formulario input comentarios-->
<span class="container padding-top-2 bmd-form-group">
<div class="container input-group">
<div class="col-1 input-group-prepend">
<div class="container row input-group">
<div class="col-2 input-group-prepend">
<span class="input-group-text">
<i class="material-icons">textsms</i>
</span>
</div>
<input th:id="${'input-comentario'+post.getId}" type="text" class="col-10 form-control" name="comentario"
<input th:id="${'input-comentario'+post.getId}" type="text" class="col-8 form-control" name="comentario"
placeholder="Deixe seu Comentário" autocomplete="off" required/>
<button th:attr="onclick=|comentarP(${post.getId})|" class="col-0 btn btn-default btn-fab btn-round">
<i class="material-icons">send</i>
Expand Down
24 changes: 12 additions & 12 deletions src/main/resources/templates/timeline/perfil.html
Original file line number Diff line number Diff line change
Expand Up @@ -121,17 +121,17 @@ <h5 class="modal-title" id="exampleModalLongTitle">Criar Postagem</h5>
</div>
<!--inputs-->
<div class="modal-body">
<span class="bmd-form-group">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="material-icons">article</i>
</span>
<span class="bmd-form-group">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="material-icons">article</i>
</span>
</div>
<input type="text" class="form-control"
name="descricao" placeholder="Texto Postagem" autocomplete="off" required>
</div>
<input type="text" class="form-control"
name="descricao" placeholder="Texto Postagem" autocomplete="off" required>
</div>
</span>
</span>
<span class="bmd-form-group">
<div class="input-group">
<div class="input-group-prepend">
Expand All @@ -142,7 +142,7 @@ <h5 class="modal-title" id="exampleModalLongTitle">Criar Postagem</h5>
<input type="file" class="form-control" name="file"
placeholder="Foto" autocomplete="off" accept="image/png/jpg/jpeg/jfif" required>
</div>
</span>
</span>
</div>
<!--footer modal-->
<div class="modal-footer">
Expand All @@ -159,7 +159,7 @@ <h5 class="modal-title" id="exampleModalLongTitle">Criar Postagem</h5>
<!--postagens-->
<div class="container row mx-auto">
<div th:each="post : ${usuario.getPostagens}" th:id="${'container-perfil-post'+post.getId}"
class="card col-md-4 col-sm-6 padding-top-1">
class="card col-lg-4 col-md-6 col-sm-12 padding-top-1">
<!--img-->
<div th:replace="replace/pack-postagem :: img-modal-container">
<!--replace img-modal-container-->
Expand Down