/* * Copyright [2015] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the * "powered by wisemapping" text requirement on every single page; * you may not use this file except in compliance with the License. * You may obtain a copy of the license at * * http://www.wisemapping.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.wisemapping.security; import com.wisemapping.model.User; import com.wisemapping.service.UserService; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.dao.DataAccessException; import org.springframework.security.core.userdetails.UsernameNotFoundException; public class UserDetailsService implements org.springframework.security.core.userdetails.UserDetailsService{ private UserService userService; private String adminUser; @Override public UserDetails loadUserByUsername(@NotNull String email) throws UsernameNotFoundException, DataAccessException { final User user = userService.getUserBy(email); if (user != null) { return new UserDetails(user, isAdmin(email)); } else { throw new UsernameNotFoundException(email); } } // @Override // @NotNull // public UserDetails loadUserDetails(@NotNull OpenIDAuthenticationToken token) throws UsernameNotFoundException { // // final User tUser = buildUserFromToken(token); // final User dbUser = userService.getUserBy(tUser.getEmail()); // // final User result; // if (dbUser != null) { // if (!token.getIdentityUrl().equals(dbUser.getAuthenticatorUri())) { // throw new IllegalStateException("Identity url for this user can not change:" + token.getIdentityUrl()); // } // result = dbUser; // } else { // try { // tUser.setAuthenticationType(AuthenticationType.OPENID); // tUser.setAuthenticatorUri(token.getIdentityUrl()); // // result = userService.createUser(tUser, false, false); // } catch (WiseMappingException e) { // throw new IllegalStateException(e); // } // // } // return new UserDetails(result, isAdmin(result.getEmail())); // } // @NotNull // private User buildUserFromToken(@NotNull OpenIDAuthenticationToken token) { // final User result = new User(); // // String lastName = null; // String firstName = null; // String email = null; // String fullName = null; // // final List<OpenIDAttribute> attributes = token.getAttributes(); // for (OpenIDAttribute attribute : attributes) { // if (attribute.getName().equals("email")) { // email = attribute.getValues().get(0); // } // // if (attribute.getName().equals("firstname")) { // firstName = attribute.getValues().get(0); // // } // // if (attribute.getName().equals("lastname")) { // lastName = attribute.getValues().get(0); // } // // if (attribute.getName().equals("fullname")) { // fullName = attribute.getValues().get(0); // } // // } // if (lastName == null || firstName == null) { // result.setFirstname(fullName); // result.setLastname(""); // } else { // result.setLastname(lastName); // result.setFirstname(firstName); // } // result.setEmail(email); // result.setPassword(""); // // final Calendar now = Calendar.getInstance(); // result.setActivationDate(now); // return result; // } private boolean isAdmin(@Nullable String email) { return email != null && adminUser != null && email.trim().endsWith(adminUser); } public UserService getUserService() { return userService; } public void setUserService(UserService userManager) { this.userService = userManager; } public String getAdminUser() { return adminUser; } public void setAdminUser(String adminUser) { this.adminUser = adminUser; } }