1 /* 2 * Copyright (c) 2002-2020, City of Paris 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice 10 * and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright notice 13 * and the following disclaimer in the documentation and/or other materials 14 * provided with the distribution. 15 * 16 * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its 17 * contributors may be used to endorse or promote products derived from 18 * this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 * 32 * License 1.0 33 */ 34 /* 35 /* 36 * Copyright (c) 2002-2017, Mairie de Paris 37 * All rights reserved. 38 * 39 * Redistribution and use in source and binary forms, with or without 40 * modification, are permitted provided that the following conditions 41 * are met: 42 * 43 * 1. Redistributions of source code must retain the above copyright notice 44 * and the following disclaimer. 45 * 46 * 2. Redistributions in binary form must reproduce the above copyright notice 47 * and the following disclaimer in the documentation and/or other materials 48 * provided with the distribution. 49 * 50 * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its 51 * contributors may be used to endorse or promote products derived from 52 * this software without specific prior written permission. 53 * 54 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 55 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 56 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 57 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE 58 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 59 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 60 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 61 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 62 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 63 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 64 * POSSIBILITY OF SUCH DAMAGE. 65 * 66 * License 1.0 67 */ 68 package fr.paris.lutece.plugins.participatorybudget.web.rs; 69 70 import javax.servlet.ServletException; 71 import javax.servlet.http.HttpServletRequest; 72 import javax.ws.rs.GET; 73 import javax.ws.rs.Path; 74 import javax.ws.rs.PathParam; 75 import javax.ws.rs.Produces; 76 import javax.ws.rs.core.Context; 77 import javax.ws.rs.core.MediaType; 78 79 import fr.paris.lutece.plugins.participatorybudget.service.MyInfosService; 80 import fr.paris.lutece.plugins.participatorybudget.web.MyInfosXPage; 81 import fr.paris.lutece.plugins.rest.service.RestConstants; 82 import fr.paris.lutece.portal.service.security.LuteceUser; 83 import fr.paris.lutece.portal.service.security.SecurityService; 84 import fr.paris.lutece.portal.service.util.AppLogService; 85 86 @Path( RestConstants.BASE_PATH + "myinfos" ) 87 public class MyInfosRest extends AbstractServiceRest 88 { 89 90 private static final String LOG_UNAUTHENTICATED_REQUEST = "Calling MyInfos rest API with unauthenticated request"; 91 92 // ********************************************************************************************* 93 // * MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS M * 94 // * MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS MYINFOS M * 95 // ********************************************************************************************* 96 97 /** 98 * Returns true if current user infos are valid 99 * 100 * @return {@code true} if current user infos are valid, {@code false} otherwise 101 * @throws ServletException 102 */ 103 @GET 104 @Path( "{userid}/are-myinfos-valid" ) 105 @Produces( MediaType.APPLICATION_JSON ) 106 public String areMyInfosValid( @Context HttpServletRequest request, @PathParam( "userid" ) String userId ) throws ServletException 107 { 108 if ( !isRequestAuthenticated( request ) ) 109 { 110 AppLogService.error( LOG_UNAUTHENTICATED_REQUEST ); 111 throw new ServletException( LOG_UNAUTHENTICATED_REQUEST ); 112 } 113 try 114 { 115 LuteceUser user = SecurityService.getInstance( ).getUser( userId ); 116 if ( user == null ) 117 { 118 return formatJson( "KO", "No such user : " + userId + " !" ); 119 } 120 return formatJson( "OK", MyInfosService.loadUserInfos( user ).getIsValid( ) ); 121 } 122 catch( Exception e ) 123 { 124 AppLogService.error( e ); 125 return formatJson( "KO", false ); 126 } 127 } 128 129 /** 130 * Returns URL of page where user can fill its personal infos 131 * 132 * @return url of the web page 133 * @throws ServletException 134 */ 135 @GET 136 @Path( "url-myinfos-fill-action" ) 137 @Produces( MediaType.APPLICATION_JSON ) 138 public String getUrlMyInfosFillAction( @Context HttpServletRequest request ) throws ServletException 139 { 140 if ( !isRequestAuthenticated( request ) ) 141 { 142 AppLogService.error( LOG_UNAUTHENTICATED_REQUEST ); 143 throw new ServletException( LOG_UNAUTHENTICATED_REQUEST ); 144 } 145 try 146 { 147 return formatJson( "OK", MyInfosXPage.getUrlMyInfos( ) ); 148 } 149 catch( Exception e ) 150 { 151 AppLogService.error( e ); 152 return formatJson( "KO", false ); 153 } 154 } 155 156 }