Commit dbc0be49 authored by Luca Verardo's avatar Luca Verardo
Browse files

Merge branch 'master' into add-jenkins-ci

parents 3ad09871 2dd272f0
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
# MentorArc

6e semestre HE-Arc

# Cahier des charges

## Intro

Application permettant de mettre en relation des étudiants/profs de l'He-Arc pour proposer de l'aide dans des matières enseignées. Il y a 2 types de rôles: Les mentors peuvent proposer leur aide en précisant leurs disponibilités et leur localisation, ainsi que les matières maitrisées. Les poulains peuvent rechercher de l'aide à un endroit/moment donné pour une certaine matière. Les poulains peuvent aussi faire une requête, une demande de soutien si aucun mentor ne propose d'aide à un certain moment donné.

Pour aller plus loin, un système d'emails permettra de notifier les mentors ou les poulains en cas de requête d'aide ou d'aide proposé. Un système d'évaluation est aussi envisageable pour potentiellement proposer des récompenses après un certain nombre d'aides apportés. Aussi, un historique de toutes les interactions permettra aux mentors d'avoir un suivi.

## Objectifs primaires

* Système d'authentification (LDAP)
* Mise en place de 3 rôles:
  * Les mentors
    * élèves mentors
    * professeurs mentors
  * Les poulains
* Création par formulaire:
  * Demande de soutien
  * Proposition de son soutien
* Recherche par matière, localisation, utilisateur, temporalité, ...


## Objectifs secondaires

* En tant que mentor, système de notification par mail en cas de requêtes d'aide dans une matière spécifique
* En tant que poulain, système de notification par mail en cas de disponibilité d'un mentor dans une matière spécifique
* Review (score) lié au mentor
* Historique des aides apportés pour les mentors
* Système de reward quant à son score

## Frameworks & composants

* SpringBoot
* SpringMVC / Thymeleaf
* JPA / Spring Data
* Sécurité avec Spring Security
* Sessions
* mySQL
 No newline at end of file
+4 −0
Original line number Diff line number Diff line
@@ -39,6 +39,10 @@
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-core</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
+48 −0
Original line number Diff line number Diff line
package com.example.demo;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.web.DefaultRedirectStrategy;
import org.springframework.security.web.RedirectStrategy;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;

@Configuration
public class CustomLoginSuccessHandler extends SimpleUrlAuthenticationSuccessHandler{

    @Override
    protected void handle(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException {

        String targetUrl = determineTargetUrl(authentication);

        if (response.isCommitted()) {
            return;
        }
        RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
        redirectStrategy.sendRedirect(request, response, targetUrl);
    }
    
    protected String determineTargetUrl(Authentication authentication) {
        String url = "/login?error=true";

        // Fetch the roles from Authentication object
        Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
        List<String> roles = new ArrayList<String>();
        for (GrantedAuthority a : authorities) {
            roles.add(a.getAuthority());
        }

        // check user role and decide the redirect URL
        if (roles.contains("ADMIN") || roles.contains("POULAIN") || roles.contains("MENTOR")) {
            url = "/connected";
        }
        
        return url;
    }
}
+0 −14
Original line number Diff line number Diff line
package com.example.demo;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MVCController implements WebMvcConfigurer {

    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/login").setViewName("login");
    }

}
+0 −2
Original line number Diff line number Diff line
@@ -5,9 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MentorArcApplication {

    public static void main(String[] args) {
        SpringApplication.run(MentorArcApplication.class, args);
    }

}
Loading