66import java .net .URLEncoder ;
77import java .util .ArrayList ;
88import java .util .Collection ;
9- import java .util .Locale ;
109import java .util .UUID ;
1110
1211import javax .mail .MessagingException ;
1615import javax .servlet .http .HttpServlet ;
1716import javax .servlet .http .HttpServletRequest ;
1817import javax .servlet .http .HttpServletResponse ;
19- import javax .ws .rs .core .Response ;
20-
21- import org .apache .log4j .Logger ;
2218
2319import com .fasterxml .jackson .databind .ObjectMapper ;
2420
3026import eu .geoknow .generator .utils .HttpUtils ;
3127import eu .geoknow .generator .utils .RandomStringGenerator ;
3228
33-
3429/**
3530 * Servlet provides some authentication functions: login, logout, register new user, restore
3631 * password, change password.
@@ -47,9 +42,6 @@ public class AuthenticationServlet extends HttpServlet {
4742 *
4843 */
4944 private static final long serialVersionUID = 1L ;
50-
51- private static final Logger log = Logger .getLogger (AuthenticationServlet .class );
52-
5345 private FrameworkUserManager frameworkUserManager ;
5446
5547 @ Override
@@ -76,10 +68,6 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
7668 throws ServletException , IOException {
7769 String mode = request .getParameter ("mode" );
7870
79- String language = request .getParameter ("lang" );
80- if (language == null )
81- language = "en" ;
82- Locale locale = new Locale (language );
8371
8472 PrintWriter out = response .getWriter ();
8573
@@ -90,16 +78,16 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
9078 // check username and password
9179 boolean correctCredentials = false ;
9280 try {
93-
94- correctCredentials = frameworkUserManager .checkPassword (username , password );
81+ if ( username != null && ! username . isEmpty ())
82+ correctCredentials = frameworkUserManager .checkPassword (username , password );
9583 } catch (Exception e ) {
9684 e .printStackTrace ();
9785 response .sendError (HttpServletResponse .SC_INTERNAL_SERVER_ERROR , e .getMessage ());
9886 return ;
9987 }
10088
10189 if (!correctCredentials ) {
102- response .sendError (HttpServletResponse .SC_UNAUTHORIZED );
90+ response .sendError (HttpServletResponse .SC_OK );
10391 return ;
10492 }
10593
@@ -122,8 +110,6 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
122110 userProfile = frameworkUserManager .getUserProfile (username );
123111 // send request with session token and user profile
124112
125- log .debug (userProfile .getRole ().getName ());
126-
127113 ObjectMapper objectMapper = new ObjectMapper ();
128114 String responseStr = objectMapper .writeValueAsString (userProfile );
129115
@@ -142,7 +128,8 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
142128 String username = request .getParameter ("username" );
143129 // remove user session tokens
144130 try {
145- frameworkUserManager .removeAllSessionTokens (username );
131+ if (username != null && !username .isEmpty ())
132+ frameworkUserManager .removeAllSessionTokens (username );
146133 // remove session token from cookies
147134 Cookie tokenCookie = new Cookie ("token" , "" );
148135 Cookie userCookie = new Cookie ("user" , "" );
@@ -157,32 +144,33 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
157144 } else if ("create" .equals (mode )) {
158145
159146 String username = request .getParameter ("username" );
160- String email = request .getParameter ("email" );
147+ String emailTo = request .getParameter ("email" );
161148 // check if user already exists
162149 boolean userExists = false ;
163150 try {
164- userExists = frameworkUserManager .checkUserExists (username , email );
151+ userExists = frameworkUserManager .checkUserExists (username , emailTo );
165152 } catch (Exception e ) {
166153 e .printStackTrace ();
167154 }
168155 if (userExists ) {
169- response .setStatus (Response .Status .CONFLICT .ordinal ());
170- out .print ("User already exists" );
156+ response .setStatus (HttpServletResponse .SC_INTERNAL_SERVER_ERROR );
157+ response .setHeader ("content-type" , "application/json" );
158+ out .print ("{\" code\" : \" 1\" , \" message\" : \" User already exists\" }" );
171159 return ;
172160 }
173161 // create user
174162 String password = new RandomStringGenerator ().generateBasic (6 );
175163
176164 try {
177- frameworkUserManager .createUser (username , password , email );
165+ frameworkUserManager .createUser (username , password , emailTo );
178166
179167
180168 EmailSender emailSender = FrameworkConfiguration .getInstance ().getDefaultEmailSender ();
181-
182- emailSender .send (email , "GeoKnow registration" , "Your login: " + username + ", password: "
183- + password );
169+ emailSender .send (emailTo , "GeoKnow registration" , "Your login: " + username
170+ + ", password: " + password );
184171 String responseStr =
185- "{\" message\" : \" Your password will be sent to your e-mail address " + email + " \" }" ;
172+ "{\" message\" : \" Your password will be sent to your e-mail address " + emailTo
173+ + " \" }" ;
186174 response .getWriter ().print (responseStr );
187175
188176 } catch (MessagingException e ) {
@@ -204,13 +192,13 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
204192 try {
205193 valid = frameworkUserManager .checkToken (username , token );
206194 if (!valid ) {
207- response .sendError (HttpServletResponse .SC_INTERNAL_SERVER_ERROR , "invalid token " + token
195+ response .sendError (HttpServletResponse .SC_UNAUTHORIZED , "invalid token " + token
208196 + " for user " + username );
209197 } else {
210198 // check old password
211199 boolean isCorrect = frameworkUserManager .checkPassword (username , oldPassword );
212200 if (!isCorrect ) {
213- response .setStatus (HttpServletResponse .SC_INTERNAL_SERVER_ERROR );
201+ response .setStatus (HttpServletResponse .SC_FORBIDDEN );
214202 out .print ("{\" code\" : \" 2\" , \" message\" : \" Incorrect old password\" }" );
215203 return ;
216204 }
@@ -221,12 +209,11 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
221209 // send new password to user
222210 UserProfile userProfile = frameworkUserManager .getUserProfile (username );
223211 if (userProfile == null ) {
224- response .sendError (HttpServletResponse .SC_INTERNAL_SERVER_ERROR , "User profile "
225- + username + " not found" );
212+ response .sendError (HttpServletResponse .SC_NOT_FOUND , "User profile " + username
213+ + " not found" );
226214 return ;
227215 }
228216 FrameworkConfiguration frameworkConfiguration = FrameworkConfiguration .getInstance ();
229-
230217 EmailSender emailSender = frameworkConfiguration .getDefaultEmailSender ();
231218 emailSender .send (userProfile .getEmail (), "GeoKnow change password" ,
232219 "Your password was changed. Your login: " + username + ", new password: "
@@ -248,7 +235,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
248235 try {
249236 userProfile = frameworkUserManager .getUserProfile (username );
250237 if (userProfile == null ) {
251- response .setStatus (HttpServletResponse .SC_INTERNAL_SERVER_ERROR );
238+ response .setStatus (HttpServletResponse .SC_NOT_FOUND );
252239 out .print ("{\" code\" : \" 3\" , \" message\" : \" User doesn't exists\" }" );
253240 return ;
254241 }
@@ -258,9 +245,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
258245
259246 // send new password to user
260247 FrameworkConfiguration frameworkConfiguration = FrameworkConfiguration .getInstance ();
261-
262248 EmailSender emailSender = frameworkConfiguration .getDefaultEmailSender ();
263-
264249 emailSender .send (userProfile .getEmail (), "GeoKnow registration" , "Your login: " + username
265250 + ", password: " + password );
266251 String responseStr =
@@ -292,7 +277,9 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
292277 accounts .add (p .getAccountURI ());
293278 String responseStr = new ObjectMapper ().writeValueAsString (accounts );
294279 response .getWriter ().print (responseStr );
280+
295281 } else {
282+
296283 // throw new ServletException("Unexpected mode: " + mode);
297284 response .sendError (HttpServletResponse .SC_INTERNAL_SERVER_ERROR , "Unexpected mode: " + mode );
298285
0 commit comments