-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAuthController.java
More file actions
96 lines (75 loc) · 3.63 KB
/
AuthController.java
File metadata and controls
96 lines (75 loc) · 3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package com.planets.app.controller;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMethod;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.planets.app.model.AppUser;
import com.planets.app.model.repo.AppUserRepo;
import static edu.tamu.framework.enums.ApiResponseType.SUCCESS;
import static edu.tamu.framework.enums.ApiResponseType.ERROR;
import edu.tamu.framework.aspect.annotation.ApiMapping;
import edu.tamu.framework.aspect.annotation.Data;
import edu.tamu.framework.aspect.annotation.Parameters;
import edu.tamu.framework.controller.CoreAuthController;
import edu.tamu.framework.model.ApiResponse;
@Controller
@ApiMapping("/auth")
public class AuthController extends CoreAuthController {
@Autowired
AppUserRepo appUserRepo;
@ApiMapping(value="/login", method=RequestMethod.POST)
public ApiResponse login(@Parameters Map<String, String[]> parameters) {
String email = parameters.get("email")[0];
String password = parameters.get("password")[0];
AppUser user = appUserRepo.findByEmail(email);
if(user == null) {
String errorMessage = "No user found with email " + email + "!";
logger.debug(errorMessage);
return new ApiResponse(ERROR, errorMessage);
}
if(!authUtility.validatePassword(password, user.getPassword())) {
String errorMessage = "Authentication failed!";
logger.debug(errorMessage);
return new ApiResponse(ERROR, errorMessage);
}
try {
Map<String, String> userMap = new HashMap<String, String>();
userMap.put("lastName", user.getLastName());
userMap.put("firstName", user.getFirstName());
userMap.put("uin", String.valueOf(user.getUin()));
userMap.put("email", user.getEmail());
return new ApiResponse(SUCCESS, jwtUtility.makeToken(userMap));
} catch (InvalidKeyException | JsonProcessingException | NoSuchAlgorithmException | IllegalStateException | UnsupportedEncodingException e) {
logger.debug("Unable to generate token!");
return new ApiResponse(ERROR, "Unable to generate token!");
}
}
@ApiMapping(value="/register", method=RequestMethod.POST)
@Transactional
public ApiResponse registration(@Parameters Map<String, String[]> parameters) {
ApiResponse apiResponse = null;
if( parameters.get("email") == null
|| parameters.get("password") == null
) {
String error = "Missing neccessary information:";
error = parameters.get("email") == null ? (error + " email") : error;
error = parameters.get("password") == null ? (error + " pssword") : error;
apiResponse = new ApiResponse(ERROR, error);
} else {
System.out.println(authUtility);
AppUser user = appUserRepo.create(parameters.get("email")[0], "", "", authUtility.encodePassword(parameters.get("password")[0]));
user.setRole("ROLE_USER");
appUserRepo.save(user);
apiResponse = new ApiResponse(SUCCESS, "The email " +parameters.get("email")[0]+" was registered.", user);
}
return apiResponse;
}
public ApiResponse login(@Data String data) {return null;}
public ApiResponse registration(String data, @Parameters Map<String, String[]> parameters) {return null;}
}