Blame view

src/main/java/etunicorn/controller/BaseController.java 2.83 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;
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
9
10
  import org.springframework.http.HttpStatus;
  import org.springframework.http.ResponseEntity;
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
11
12
  import org.springframework.web.bind.annotation.RestController;
  
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
13
  import javax.servlet.http.HttpServletRequest;
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
14
15
16
  import java.io.PrintWriter;
  import java.io.StringWriter;
  import java.util.Date;
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
17
18
19
20
21
22
23
24
25
  
  /**
   * etunicorn-server
   * Copyright © 2017 Le Club Info Polytech Lille
   * Tous droits réservés
   */
  @RestController
  public class BaseController {
  
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
26
27
28
29
30
31
32
33
      // 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...
34
35
36
37
      public void setRequest(HttpServletRequest request) {
          this.request = request;
      }
  
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
38
39
40
41
42
43
44
45
46
47
48
49
      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...
50
51
  
      // Utilités pour générer des erreurs
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
52
      private JSONObject generateErrorJSON(HttpStatus status, String message) {
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
53
          JSONObject json = new JSONObject();
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
54
          json.put("timestamp", new Date().getTime());
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
55
56
          json.put("status", status.value());
          json.put("message", message);
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
57
58
          json.put("path", request.getPathInfo());
          return json;
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
59
  
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
60
61
      }
  
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
62
63
      public ResponseEntity generateError(HttpStatus status, String message) {
          JSONObject json = generateErrorJSON(status, message);
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
64
65
66
          return new ResponseEntity(json, status);
      }
  
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
67
68
69
70
71
72
73
74
      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...
75
76
      }
  
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
77
78
      public ResponseEntity generateError(HttpStatus status) {
          return generateError(status, status.getReasonPhrase());
ec214b7d   Geoffrey PREUD'HOMME   Implémentation JS...
79
80
      }
  
474776a8   Geoffrey PREUD'HOMME   Implémentation JS...
81
82
      public ResponseEntity generateError(Exception exception) {
          return generateError(HttpStatus.INTERNAL_SERVER_ERROR, exception, exception.getLocalizedMessage());
5596f9d9   Geoffrey PREUD'HOMME   Début de l'implém...
83
      }
8f35fffd   Geoffrey PREUD'HOMME   Ajout de la sécurité
84
  }