Skip to content

Commit

Permalink
Adding dashboard initial settings
Browse files Browse the repository at this point in the history
  • Loading branch information
Wiran-Larbi committed Jun 3, 2024
1 parent 8fa6945 commit e66d483
Show file tree
Hide file tree
Showing 39 changed files with 654 additions and 72 deletions.
9 changes: 0 additions & 9 deletions backend/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,6 @@
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.ldap</groupId>-->
<!-- <artifactId>spring-ldap-core</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.security</groupId>-->
<!-- <artifactId>spring-security-ldap</artifactId>-->
<!-- </dependency>-->

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sp.auth.audit;
package com.sp.audit;


import com.sp.users.user.User;
import com.sp.users.model.User;
import org.springframework.data.domain.AuditorAware;
import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.sp.auth.controller;

import com.sp.auth.schema.AuthenticationRequest;
import com.sp.auth.schema.AuthenticationResponse;
import com.sp.auth.schema.RegisterRequest;
import com.sp.auth.schema.ResetPasswordRequest;
import com.sp.auth.schema.*;
import com.sp.auth.service.AuthenticationService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
Expand All @@ -19,6 +16,8 @@
import org.springframework.security.web.authentication.logout.LogoutHandler;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;

@RestController
@RequestMapping("/auth")
@RequiredArgsConstructor
Expand Down Expand Up @@ -57,6 +56,12 @@ public ResponseEntity<AuthenticationResponse> authenticate(
) {
return ResponseEntity.ok(service.authenticate(request));
}
@PostMapping("/refresh-token")
public ResponseEntity<AuthenticationResponse> refreshToken(
@RequestBody @Valid RefreshTokenRequest request
) throws IOException {
return ResponseEntity.ok(service.refreshToken(request));
}

@GetMapping("/activate-account")
public ResponseEntity<?> activateAccount(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package com.sp.auth.schema;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class AuthenticationResponse {
private String token;
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("refresh_token")
private String refreshToken;
}
12 changes: 12 additions & 0 deletions backend/src/main/java/com/sp/auth/schema/RefreshTokenRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.sp.auth.schema;


import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class RefreshTokenRequest {
private String refreshToken;
private String accessToken;
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package com.sp.auth.service;

import com.sp.auth.schema.AuthenticationRequest;
import com.sp.auth.schema.AuthenticationResponse;
import com.sp.auth.schema.RegisterRequest;
import com.sp.auth.schema.ResetPasswordRequest;
import com.sp.auth.token.*;
import com.sp.users.role.Role;
import com.sp.users.user.UserRepository;
import com.sp.mail.config.EmailTemplateName;
import com.sp.auth.schema.*;
import com.sp.token.Token;
import com.sp.token.TokenRepository;
import com.sp.token.TokenType;
import com.sp.users.model.Role;
import com.sp.users.model.UserRepository;
import com.sp.mail.config.*;
import com.sp.mail.service.MailService;
import com.sp.users.user.User;
import com.sp.users.model.User;
import jakarta.mail.MessagingException;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
Expand All @@ -18,6 +17,7 @@
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.security.SecureRandom;
import java.time.LocalDateTime;
import java.util.HashMap;
Expand Down Expand Up @@ -70,6 +70,9 @@ public AuthenticationResponse authenticate(AuthenticationRequest request) {

// Generate a new valid token
var jwtToken = jwtService.generateToken(claims, user);
// Generate a new refresh token
var refreshToken = jwtService.generateRefreshToken(user);

var token = Token.builder()
.token(jwtToken)
.tokenType(TokenType.BEARER)
Expand All @@ -85,7 +88,8 @@ public AuthenticationResponse authenticate(AuthenticationRequest request) {
// Return the token
return AuthenticationResponse
.builder()
.token(jwtToken)
.accessToken(jwtToken)
.refreshToken(refreshToken)
.build();
}

Expand All @@ -109,7 +113,39 @@ public void activateAccount(String token) throws MessagingException {
tokenRepository.save(activationTwoFactorToken);
}


public AuthenticationResponse refreshToken(
RefreshTokenRequest request
) throws IOException {

final String username;

username = jwtService.extractUsername(request.getRefreshToken());

if (username != null){
var user = this.userRepository.findByEmail(username)
.orElseThrow(() -> new RuntimeException("User not found"));
if (jwtService.isTokenValid(request.getRefreshToken(), user)) {
var accessToken = jwtService.generateToken(user);
revokeAllUserTokens(user);
var token = Token.builder()
.token(accessToken)
.tokenType(TokenType.BEARER)
.revoked(false)
.expired(false)
.createdAt(LocalDateTime.now())
.validatedAt(LocalDateTime.now())
.user(user)
.build();
tokenRepository.save(token);
return AuthenticationResponse
.builder()
.accessToken(accessToken)
.refreshToken(request.getRefreshToken())
.build();
}
}
throw new RuntimeException("Refresh token is invalid");
}

public void resetPassword(ResetPasswordRequest request) throws MessagingException {
// Reset Password
Expand Down
6 changes: 6 additions & 0 deletions backend/src/main/java/com/sp/auth/service/JwtService.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,19 @@ public class JwtService {
@Value("${application.security.jwt.secret}")
private String secretKey = "secret";

@Value("${application.security.jwt.refresh-expiration}")
private long refreshExpiration;

public String generateToken(UserDetails userDetails){
return generateToken(new HashMap<>(), userDetails);
}

public String generateToken(Map<String, Object> claims, UserDetails userDetails){
return buildToken(claims, userDetails, jwtExpiration);
}
public String generateRefreshToken(UserDetails userDetails){
return buildToken(new HashMap<>(), userDetails, refreshExpiration);
}

public String buildToken(Map<String, Object> claims, UserDetails userDetails, long expiration){
var authorities = userDetails
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.sp.auth.service;
import com.sp.auth.token.TokenRepository;
import com.sp.token.TokenRepository;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.sp.auth.service;

import com.sp.users.user.UserRepository;
import com.sp.users.model.UserRepository;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.userdetails.UserDetails;
Expand Down
3 changes: 1 addition & 2 deletions backend/src/main/java/com/sp/config/BeansConfig.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.sp.config;

import com.sp.auth.audit.ApplicationAuditAware;
import com.sp.audit.ApplicationAuditAware;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
Expand All @@ -20,7 +20,6 @@
import org.springframework.web.filter.CorsFilter;
import org.springframework.http.HttpHeaders;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sp.filter;

import com.sp.auth.service.JwtService;
import com.sp.auth.token.TokenRepository;
import com.sp.token.TokenRepository;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.sp.gestion.point_capture.model.PointCapture;
import com.sp.gestion.suivie_physique.model.CompteTiret;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
Expand Down Expand Up @@ -53,6 +54,9 @@ public class ClientBanque {
@OneToMany(mappedBy = "clientBanque", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<PointCapture> pointsDeCapture;

@ManyToOne
@JoinColumn(name = "compte_tiret_id", nullable = false)
private CompteTiret compteTiret;

// audit
@CreatedDate
Expand All @@ -70,4 +74,8 @@ public class ClientBanque {
@LastModifiedBy
@Column(name = "last_modified_by", insertable = false)
private String lastModifiedBy;

public String getClientBanque(){
return this.getCode() + " - " + this.getLibelle();
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.sp.gestion.leave.model;

import com.fasterxml.jackson.annotation.JsonIgnoreType;
import com.sp.users.user.User;
import com.sp.users.model.User;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.sp.gestion.leave.model.JourFerierType;
import com.sp.gestion.leave.model.JourFerierTypeRepository;
import com.sp.gestion.leave.schema.JourFerierDemandeRequest;
import com.sp.users.user.User;
import com.sp.users.model.User;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.stereotype.Service;
Expand All @@ -14,7 +14,6 @@

import java.security.Principal;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@Service
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.sp.gestion.notification.model;


import com.sp.users.model.User;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;

import java.time.LocalDateTime;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "_notification")
public class Notification {
@Id
@GeneratedValue(strategy= GenerationType.AUTO,generator="native")
@GenericGenerator(name = "native",strategy = "native")
private Long id;

private String type;

private String message;

private String action;

private String status;

private String priority;

@ManyToOne
@JoinColumn(name = "recipient_id")
private User recipient;

@ManyToOne
@JoinColumn(name = "sender_id")
private User sender;

@CreatedDate
@Column(name = "created_at", updatable = false)
private LocalDateTime createdAt;

@CreatedBy
@Column(name = "created_by", updatable = false)
private String createdBy;

@LastModifiedDate
@Column(name = "updated_at", updatable = true)
private LocalDateTime updatedAt;

@LastModifiedBy
@Column(name = "updated_by", updatable = true)
private String updatedBy;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.sp.gestion.point_capture.model;


import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "_lecteur")
public class Lecteur {

@Id
@GeneratedValue(strategy= GenerationType.AUTO,generator="native")
@GenericGenerator(name = "native",strategy = "native")
private Long id;

private String libelle;

// chaque lecteur correspond à un et un seul Point de capture, et un point de capture correspond à un et un seul Lecteur
@OneToOne(mappedBy = "lecteur")
private PointCapture pointCapture;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.sp.gestion.point_capture.model;

import org.springframework.data.jpa.repository.JpaRepository;

public interface LecteurRepository extends JpaRepository<Lecteur, Long> {
}
Loading

0 comments on commit e66d483

Please sign in to comment.