/
MfaProviderEndpoints.java
94 lines (79 loc) · 4.1 KB
/
MfaProviderEndpoints.java
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
package org.cloudfoundry.identity.uaa.mfa_provider;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.cloudfoundry.identity.uaa.zone.IdentityZoneHolder;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import static org.springframework.web.bind.annotation.RequestMethod.POST;
import static org.springframework.web.bind.annotation.RequestMethod.PUT;
@RequestMapping("/mfa-providers")
@RestController
public class MfaProviderEndpoints implements ApplicationEventPublisherAware{
protected static Log logger = LogFactory.getLog(MfaProviderEndpoints.class);
private ApplicationEventPublisher publisher;
private MfaProviderProvisioning mfaProviderProvisioning;
private MfaProviderValidator mfaProviderValidator;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.publisher = applicationEventPublisher;
}
@RequestMapping(method = POST)
public ResponseEntity<MfaProvider> createMfaProvider(@RequestBody MfaProvider body) {
String zoneId = IdentityZoneHolder.get().getId();
body.setIdentityZoneId(zoneId);
mfaProviderValidator.validate(body);
if(!StringUtils.hasText(body.getConfig().getIssuer())){
body.getConfig().setIssuer(IdentityZoneHolder.get().getName());
}
MfaProvider created = mfaProviderProvisioning.create(body,zoneId);
return new ResponseEntity<>(created, HttpStatus.CREATED);
}
@RequestMapping(value = "{id}", method = PUT)
public ResponseEntity<MfaProvider> updateMfaProvider(@PathVariable String id, @RequestBody MfaProvider body) {
String zoneId = IdentityZoneHolder.get().getId();
mfaProviderProvisioning.retrieve(id, zoneId);
body.setId(id);
body.setIdentityZoneId(zoneId);
mfaProviderValidator.validate(body);
MfaProvider updated = mfaProviderProvisioning.update(body, zoneId);
return new ResponseEntity<>(updated, HttpStatus.OK);
}
@RequestMapping(method = GET)
public ResponseEntity<List<MfaProvider>> retrieveMfaProviders() {
String zoneId = IdentityZoneHolder.get().getId();
List<MfaProvider> providers = mfaProviderProvisioning.retrieveAll(zoneId);
return new ResponseEntity<>(providers, HttpStatus.OK);
}
@RequestMapping(value = "{id}", method = GET)
public ResponseEntity<MfaProvider> retrieveMfaProviderById(@PathVariable String id) {
String zoneId = IdentityZoneHolder.get().getId();
MfaProvider provider = mfaProviderProvisioning.retrieve(id, zoneId);
return new ResponseEntity<>(provider, HttpStatus.OK);
}
@ExceptionHandler(InvalidMfaProviderException.class)
public ResponseEntity<InvalidMfaProviderException> handleInvalidMfaProviderException(InvalidMfaProviderException e) {
return new ResponseEntity<>(e, HttpStatus.UNPROCESSABLE_ENTITY);
}
@ExceptionHandler(EmptyResultDataAccessException.class)
public ResponseEntity<EmptyResultDataAccessException> handleEmptyResultDataAccessException(EmptyResultDataAccessException e) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
public MfaProviderProvisioning getMfaProviderProvisioning() {
return mfaProviderProvisioning;
}
public void setMfaProviderProvisioning(MfaProviderProvisioning mfaProviderProvisioning) {
this.mfaProviderProvisioning = mfaProviderProvisioning;
}
public void setMfaProviderValidator(MfaProviderValidator mfaProviderValidator) {
this.mfaProviderValidator = mfaProviderValidator;
}
}