Blame view

src/main/java/etunicorn/controller/BaseController.java 3.01 KB
2f1f76a9   Geoffrey PREUD'HOMME   Mise sous packages
1
  package etunicorn.controller;
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
2
  
2f1f76a9   Geoffrey PREUD'HOMME   Mise sous packages
3
4
  import etunicorn.entity.Permission;
  import etunicorn.entity.Session;
2f1f76a9   Geoffrey PREUD'HOMME   Mise sous packages
5
6
  import etunicorn.repository.PermissionRepository;
  import etunicorn.service.SessionService;
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
7
  import net.minidev.json.JSONObject;
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
8
  import org.springframework.beans.factory.annotation.Autowired;
ec214b7d   Geoffrey PREUD'HOMME   Implémentation JS...
9
  import org.springframework.data.repository.Repository;
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
10
11
  import org.springframework.http.HttpStatus;
  import org.springframework.http.ResponseEntity;
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
12
13
  import org.springframework.web.bind.annotation.RestController;
  
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
14
  import javax.servlet.http.HttpServletRequest;
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
15
16
17
  import java.io.PrintWriter;
  import java.io.StringWriter;
  import java.util.Date;
ec214b7d   Geoffrey PREUD'HOMME   Implémentation JS...
18
  import java.util.Map;
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
19
20
21
22
23
24
25
26
27
  
  /**
   * etunicorn-server
   * Copyright © 2017 Le Club Info Polytech Lille
   * Tous droits réservés
   */
  @RestController
  public class BaseController {
  
ec214b7d   Geoffrey PREUD'HOMME   Implémentation JS...
28
29
30
      // Utilités pour merger un request dans une entity
      @Autowired
      Map<String, Repository> repositories;
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
31
32
33
34
35
36
37
38
      // Permettent la vérification de permissions dans les méthodes de controlleur
      @Autowired
      private HttpServletRequest request;
      @Autowired
      private SessionService sessionService;
      @Autowired
      private PermissionRepository permissionRepository;
  
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
39
40
41
42
      public void setRequest(HttpServletRequest request) {
          this.request = request;
      }
  
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
43
44
45
46
47
48
49
50
51
52
53
54
      protected boolean hasPermission(Permission permission) {
          Session session = sessionService.getSession(request);
          if (session == null || permission == null) {
              return false;
          }
          return session.hasPermission(permission);
      }
  
      protected boolean hasPermission(String nomPermission) {
          Permission permission = permissionRepository.findByNom(nomPermission);
          return hasPermission(permission);
      }
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
55
56
  
      // Utilités pour générer des erreurs
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
57
      private JSONObject generateErrorJSON(HttpStatus status, String message) {
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
58
          JSONObject json = new JSONObject();
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
59
          json.put("timestamp", new Date().getTime());
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
60
61
          json.put("status", status.value());
          json.put("message", message);
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
62
63
          json.put("path", request.getPathInfo());
          return json;
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
64
  
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
65
66
      }
  
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
67
68
      public ResponseEntity generateError(HttpStatus status, String message) {
          JSONObject json = generateErrorJSON(status, message);
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
69
70
71
          return new ResponseEntity(json, status);
      }
  
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
72
73
74
75
76
77
78
79
      public ResponseEntity generateError(HttpStatus status, Exception exception, String message) {
          JSONObject json = generateErrorJSON(status, message);
          json.put("error", exception.getMessage());
          // From http://stackoverflow.com/a/1149721
          StringWriter sw = new StringWriter();
          exception.printStackTrace(new PrintWriter(sw));
          json.put("stacktrace", sw.toString());
          return new ResponseEntity(json, status);
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
80
81
      }
  
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
82
83
      public ResponseEntity generateError(HttpStatus status) {
          return generateError(status, status.getReasonPhrase());
ec214b7d   Geoffrey PREUD'HOMME   Implémentation JS...
84
85
      }
  
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
86
87
      public ResponseEntity generateError(Exception exception) {
          return generateError(HttpStatus.INTERNAL_SERVER_ERROR, exception, exception.getLocalizedMessage());
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
88
      }
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
89
  }