Skip to content

Commit 2893edb

Browse files
committed
implement logout function
1 parent ed3fd76 commit 2893edb

File tree

4 files changed

+24
-3
lines changed

4 files changed

+24
-3
lines changed

src/main/java/de/splayfer/web_backend/WebBackendApplication.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
@SpringBootApplication
77
public class WebBackendApplication {
88

9-
public static String PATH = "";
10-
119
public static void main(String[] args) {
1210
MongoDBDatabase.connect();
1311
SpringApplication.run(WebBackendApplication.class, args);

src/main/java/de/splayfer/web_backend/authentication/AuthenticationController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.splayfer.web_backend.authentication;
22

3+
import org.springframework.boot.autoconfigure.graphql.GraphQlProperties;
34
import org.springframework.http.HttpStatus;
45
import org.springframework.http.ResponseEntity;
56
import org.springframework.web.bind.annotation.*;
@@ -23,6 +24,16 @@ public ResponseEntity<?> login(@RequestBody AuthenticationUser authenticationUse
2324
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
2425
}
2526

27+
@GetMapping("/logout")
28+
public ResponseEntity<?> logout(@RequestHeader("Authorization") String token) {
29+
try {
30+
new JwtService().invalidateToken(token);
31+
} catch (Exception e) {
32+
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
33+
}
34+
return ResponseEntity.status(HttpStatus.ACCEPTED).build();
35+
}
36+
2637
private static String hashToSHA256(String value) {
2738
MessageDigest digest = null;
2839
try {

src/main/java/de/splayfer/web_backend/authentication/JwtService.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package de.splayfer.web_backend.authentication;
22

3+
import de.splayfer.web_backend.MongoDBDatabase;
34
import io.jsonwebtoken.Claims;
45
import io.jsonwebtoken.Jwts;
56
import io.jsonwebtoken.SignatureAlgorithm;
7+
import org.bson.Document;
68
import org.springframework.stereotype.Service;
79

810
import java.util.Date;
@@ -13,6 +15,8 @@ public class JwtService {
1315
private final long shortExpirationMs = 10800000; // Token validity (3 hour)
1416
private final long longExpirationMs = 86400000; // Token validity (24 hours)
1517

18+
MongoDBDatabase mongoDBDatabase = MongoDBDatabase.getDatabase("authentication");
19+
1620
public String generateToken(String username, boolean remember) {
1721
return Jwts.builder()
1822
.setSubject(username)
@@ -22,6 +26,15 @@ public String generateToken(String username, boolean remember) {
2226
.compact(); // Creates the token
2327
}
2428

29+
public void invalidateToken(String token) {
30+
try {
31+
mongoDBDatabase.insert("invalidated-tokens", new Document()
32+
.append("token", token)
33+
.append("expiresAt", Jwts.parserBuilder().setSigningKey(secretKey).build().parseClaimsJws(token).getBody().getExpiration()));
34+
} catch (Exception e) {
35+
}
36+
}
37+
2538
public boolean validateToken(String token) {
2639
try {
2740
Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token); // Verifies token integrity

src/main/java/de/splayfer/web_backend/ticket/TicketListController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import de.splayfer.web_backend.MongoDBDatabase;
44
import org.bson.json.JsonWriterSettings;
55
import org.springframework.http.ResponseEntity;
6-
import org.springframework.web.bind.annotation.CrossOrigin;
76
import org.springframework.web.bind.annotation.GetMapping;
87
import org.springframework.web.bind.annotation.RequestMapping;
98
import org.springframework.web.bind.annotation.RestController;

0 commit comments

Comments
 (0)