X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=server%2Fcompbio%2Fcontrollers%2FUserController.java;h=3c922b24fb13752d4efff40f675120ad50fb7633;hb=6823d2f36ff55b7ab11d674e3fe4d04dc57d6bbf;hp=7dbfdf437d2bd18c28d1411744e276914c862225;hpb=025c55d49c191f24d0e06c5cbb69a9894c50af22;p=proteocache.git diff --git a/server/compbio/controllers/UserController.java b/server/compbio/controllers/UserController.java index 7dbfdf4..3c922b2 100644 --- a/server/compbio/controllers/UserController.java +++ b/server/compbio/controllers/UserController.java @@ -3,9 +3,13 @@ package compbio.controllers; import java.util.Date; import java.util.regex.Pattern; +import javax.naming.directory.DirContext; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.mail.SimpleMailMessage; -import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.security.ldap.LdapUtils; +import org.springframework.ldap.core.ContextSource; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; @@ -20,14 +24,21 @@ import compbio.proteocache.users.User; import compbio.proteocache.users.UserManager; import compbio.cassandra.CassandraUserManager; +/** + * @author Alexander Sherstnev + * @author Natasha Sherstneva + * @version 1.0 Dec 2013 + */ @Controller -public class UserController { +public class UserController extends BasicController { + + @Autowired + ContextSource contextSource; - // @Inject // JavaMailSender mailSender; private final Pattern EMAIL = Pattern.compile("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"); - @RequestMapping(value = "/register/query", method = RequestMethod.POST) + @RequestMapping(value = "/register/query", method = RequestMethod.GET) public String RegisterForm(ModelMap model) { User user = new User(); model.addAttribute(user); @@ -36,14 +47,14 @@ public class UserController { @RequestMapping(value = "/register/edit/query", method = RequestMethod.GET) public String AccountForm(ModelMap model) { - User user = new User(); - user.setFullName("Sasha Sherstnev"); - user.setEmail("admin@admin.com"); - user.setOrganisation("UoD"); - user.setPosition("cleaner"); - user.setUpdateByEmail(true); - model.addAttribute("u", user); - return "Edit"; + model.put("username", getPrincipalName()); + /* + * User user = new User(); user.setFullName("Sasha Sherstnev"); + * user.setEmail("admin@admin.com"); user.setOrganisation("UoD"); + * user.setPosition("cleaner"); user.setUpdateByEmail(true); + * model.addAttribute("u", user); return "Edit"; + */ + return "support/Notimplemented"; } @RequestMapping(value = "/register/do", method = RequestMethod.POST) @@ -83,7 +94,7 @@ public class UserController { } user.setRegistrationDate(new Date()); - UserManager cm = new CassandraUserManager(); + CassandraUserManager cm = new CassandraUserManager(); try { cm.addUser(user); } catch (DataIntegrityViolationException e) { @@ -131,4 +142,29 @@ public class UserController { // mailSender.send(message); } + private boolean authenticate(String userDn, String credentials) { + DirContext ctx = null; + try { + ctx = contextSource.getContext(userDn, credentials); + return true; + } catch (Exception e) { + // Context creation failed - authentication did not succeed + System.out.println("LDAP Login failed"); + return false; + } finally { + // It is imperative that the created DirContext instance is always + // closed + LdapUtils.closeContext(ctx); + } + } + + @RequestMapping(value = "/ldaplogindo", method = RequestMethod.POST) + public String LDAPlogin(Model model, @RequestParam("j_username") String username, @RequestParam("j_password") String credentials) { + System.out.println("Try to authenticate with LDAP: username: " + username + ", credentials: " + credentials); + if (authenticate(username, credentials)) { + return "/home"; + } + return "/public"; + } + }