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;
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);
@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)
}
user.setRegistrationDate(new Date());
- UserManager cm = new CassandraUserManager();
+ CassandraUserManager cm = new CassandraUserManager();
try {
cm.addUser(user);
} catch (DataIntegrityViolationException e) {
// 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";
+ }
+
}