Add fallback email to me dto

This commit is contained in:
René Pfeuffer
2020-10-13 08:51:48 +02:00
parent 343d0b9425
commit 7fc7e33c0c
4 changed files with 38 additions and 6 deletions

View File

@@ -21,9 +21,10 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package sonia.scm.api.v2.resources;
import com.fasterxml.jackson.annotation.JsonInclude;
import de.otto.edison.hal.Embedded;
import de.otto.edison.hal.HalRepresentation;
import de.otto.edison.hal.Links;
@@ -40,7 +41,10 @@ public class MeDto extends HalRepresentation {
private String name;
private String displayName;
@JsonInclude(JsonInclude.Include.NON_NULL)
private String mail;
@JsonInclude(JsonInclude.Include.NON_NULL)
private String fallbackMail;
private Set<String> groups;
MeDto(Links links, Embedded embedded) {

View File

@@ -24,12 +24,14 @@
package sonia.scm.api.v2.resources;
import com.google.common.base.Strings;
import de.otto.edison.hal.Embedded;
import de.otto.edison.hal.Links;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import sonia.scm.group.GroupCollector;
import sonia.scm.user.EMail;
import sonia.scm.user.User;
import sonia.scm.user.UserManager;
import sonia.scm.user.UserPermissions;
@@ -46,12 +48,14 @@ public class MeDtoFactory extends HalAppenderMapper {
private final ResourceLinks resourceLinks;
private final UserManager userManager;
private final GroupCollector groupCollector;
private final EMail eMail;
@Inject
public MeDtoFactory(ResourceLinks resourceLinks, UserManager userManager, GroupCollector groupCollector) {
public MeDtoFactory(ResourceLinks resourceLinks, UserManager userManager, GroupCollector groupCollector, EMail eMail) {
this.resourceLinks = resourceLinks;
this.userManager = userManager;
this.groupCollector = groupCollector;
this.eMail = eMail;
}
public MeDto create() {
@@ -61,6 +65,7 @@ public class MeDtoFactory extends HalAppenderMapper {
MeDto dto = createDto(user);
mapUserProperties(user, dto);
mapGroups(user, dto);
setGeneratedMail(user, dto);
return dto;
}
@@ -79,6 +84,12 @@ public class MeDtoFactory extends HalAppenderMapper {
return subject.getPrincipals();
}
private void setGeneratedMail(User user, MeDto dto) {
if (Strings.isNullOrEmpty(user.getMail())) {
dto.setFallbackMail(eMail.createFallbackMailAddress(user));
}
}
private MeDto createDto(User user) {
Links.Builder linksBuilder = linkingTo().self(resourceLinks.me().self());