Package org.butor.dbauth.model

Source Code of org.butor.dbauth.model.DefaultUserModel

package org.butor.dbauth.model;

import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.butor.auth.common.AuthMessageID;
import org.butor.auth.common.user.ListUserCriteria;
import org.butor.auth.common.user.User;
import org.butor.auth.common.user.UserKey;
import org.butor.auth.common.user.UserModel;
import org.butor.auth.common.user.UserQuestions;
import org.butor.auth.common.user.UserServices;
import org.butor.auth.dao.UserDao;
import org.butor.checksum.CommonChecksumFunction;
import org.butor.json.CommonRequestArgs;
import org.butor.json.service.Context;
import org.butor.json.service.ResponseHandler;
import org.butor.ldap.LdapUserModel;
import org.butor.mail.IMailer;
import org.butor.utils.ApplicationException;
import org.butor.utils.CommonMessageID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.base.Strings;

public class DefaultUserModel implements UserServices, UserModel {
  private Logger logger = LoggerFactory.getLogger(getClass());
  private UserDao userDao;
  public static final String EMAIL_REGEX = "^[a-zA-Z0-9\\w\\.-]+@[a-zA-Z0-9\\w\\.-]+\\.[a-zA-Z0-9\\w\\.-]+$";
  public static final Pattern emailPattern = Pattern.compile(EMAIL_REGEX);
  private LdapUserModel ldapUserModel = null;
  private IMailer mailer;

  @Override
  public void listUser(final Context ctx, ListUserCriteria criteria, String func) {
    CommonRequestArgs cra = ctx.getRequest();
    ResponseHandler<Object> rh = ctx.getResponseHandler();
    List<User> list = userDao.listUser(criteria, func, cra);
    Iterator<User> it = list.iterator();
    while (it.hasNext()) {
      User u = it.next();
      u.setPwd(null);
      rh.addRow(u);
    }
  }

  @Override
  public void readUser(Context ctx, String id, String func) {
    ResponseHandler<Object> rh = ctx.getResponseHandler();
    CommonRequestArgs cra = ctx.getRequest();
    User user = readUser(id, func, cra);
    if (user == null) {
      rh.addMessage(CommonMessageID.NOT_FOUND.getMessage());
      return;
    }
    rh.addRow(user);
  }

  @Override
  public void updateUser(Context ctx, User user) {
    ResponseHandler<Object> rh = ctx.getResponseHandler();
    if (Strings.isNullOrEmpty(user.getEmail())) {
      rh.addMessage(CommonMessageID.MISSING_ARG.getMessage("Email"));
      return;
    }
    if (Strings.isNullOrEmpty(user.getId())) {
      rh.addMessage(CommonMessageID.MISSING_ARG.getMessage("ID"));
      return;
    }
    CommonRequestArgs cra = ctx.getRequest();
    validateUser(user);
    if(Strings.isNullOrEmpty(user.getFullName())) {
      user.setFullName(user.getDisplayName());
    }
   
    if (!Strings.isNullOrEmpty(user.getNewPwd())) {
      user.setPwd(CommonChecksumFunction.SHA512.generateChecksum(user.getNewPwd()));
    }
    UserKey uk = userDao.updateUser(user, cra);
    if (uk == null) {
      rh.addMessage(CommonMessageID.NOT_FOUND.getMessage());
      return;
    }
    rh.addRow(uk);
  }

  public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
  }


  @Override
  public void insertUser(Context ctx, User user) {
    ResponseHandler<Object> rh = ctx.getResponseHandler();
    CommonRequestArgs cra = ctx.getRequest();
    validateUser(user);
    if(Strings.isNullOrEmpty(user.getFullName())) {
      user.setFullName(user.getDisplayName());
    }

    if (!Strings.isNullOrEmpty(user.getNewPwd())) {
      user.setPwd(CommonChecksumFunction.SHA512.generateChecksum(user.getNewPwd()));
    }

    UserKey uk = userDao.insertUser(user, cra);
    if (uk == null) {
      rh.addMessage(CommonMessageID.SERVICE_FAILURE.getMessage());
      return;
    }

    rh.addRow(uk);
  }

  private void validateUser(User user) {
    if (user == null) {
      ApplicationException.exception(CommonMessageID.MISSING_ARG.getMessage("User"));
    }
    if (Strings.isNullOrEmpty(user.getId())) {
      ApplicationException.exception(CommonMessageID.MISSING_ARG.getMessage("ID"));
    }
    if (Strings.isNullOrEmpty(user.getEmail())) {
      ApplicationException.exception(CommonMessageID.MISSING_ARG.getMessage("Email"));
    }
    Matcher matcher = emailPattern.matcher(user.getEmail());
    if (!matcher.find()) {
      ApplicationException.exception(CommonMessageID.INVALID_ARG.getMessage("Email"));
    }
    if (Strings.isNullOrEmpty(user.getFirstName())) {
      ApplicationException.exception(CommonMessageID.MISSING_ARG.getMessage("First name"));
    }
    if (Strings.isNullOrEmpty(user.getLastName())) {
      ApplicationException.exception(CommonMessageID.MISSING_ARG.getMessage("Last name"));
    }
    if (Strings.isNullOrEmpty(user.getDisplayName())) {
      ApplicationException.exception(CommonMessageID.MISSING_ARG.getMessage("Display name"));
    }
    if (user.getFirmId() <= 0) {
      ApplicationException.exception(CommonMessageID.MISSING_ARG.getMessage("Firm"));
    }
    if (!Strings.isNullOrEmpty(user.getNewPwd()) || !Strings.isNullOrEmpty(user.getNewPwdConf())) {
      if (Strings.isNullOrEmpty(user.getNewPwd())) {
        ApplicationException.exception(CommonMessageID.MISSING_ARG.getMessage("New password"));
      }
      if (Strings.isNullOrEmpty(user.getNewPwdConf())) {
        ApplicationException.exception(CommonMessageID.MISSING_ARG.getMessage("Confirm new password"));
      }
      if (!user.getNewPwd().equals(user.getNewPwdConf())) {
        ApplicationException.exception(CommonMessageID.INVALID_ARG.getMessage("new passwords do not match"));
      }
    }
    String id = user.getId();
    //force id to lowercase
    user.setId(id.toLowerCase());
    boolean emailId = emailPattern.matcher(id).find();
    if (!emailId) {
      ApplicationException.exception(AuthMessageID.USER_ID_SHOULD_BE_EMAIL.getMessage());
    }
  }
  @Override
  public void deleteUser(Context ctx, UserKey uk) {
    CommonRequestArgs cra = ctx.getRequest();
    User user = userDao.readUser(uk.getId(), null, cra);
    if (user == null) {
      ApplicationException.exception(AuthMessageID.USER_NOT_FOUND.getMessage());
    }
    if (user.isActive()) {
      ApplicationException.exception(AuthMessageID.USER_SHOULD_BE_INACTIVE_TO_BE_DELETED.getMessage());
    }
    userDao.deleteUser(uk, cra);
  }

  @Override
  public User readUser(String id, String func, CommonRequestArgs cra) {
    return userDao.readUser(id, func, cra);
  }

  @Override
  public void readQuestions(Context ctx, String id) {
    ResponseHandler<Object> rh = ctx.getResponseHandler();
    CommonRequestArgs cra = ctx.getRequest();
    UserQuestions uq = userDao.readQuestions(id, cra);
    if (uq == null) {
      rh.addMessage(CommonMessageID.NOT_FOUND.getMessage());
      return;
    }
    rh.addRow(uq);
  }

  @Override
  public void updateState(Context ctx, User user) {
    ResponseHandler<Object> rh = ctx.getResponseHandler();
    CommonRequestArgs cra = ctx.getRequest();
    UserKey uk = userDao.updateState(user, cra);
    if (uk == null) {
      rh.addMessage(CommonMessageID.NOT_FOUND.getMessage());
      return;
    }
    rh.addRow(uk);
  }

  @Override
  public void updateQuestions(Context ctx, UserQuestions questions) {
    ResponseHandler<Object> rh = ctx.getResponseHandler();
    CommonRequestArgs cra = ctx.getRequest();
    UserKey uk = userDao.updateQuestions(questions, cra);
    if (uk == null) {
      rh.addMessage(CommonMessageID.NOT_FOUND.getMessage());
      return;
    }
    rh.addRow(uk);
  }

  public void setLdapUserModel(LdapUserModel ldapUserModel) {
    this.ldapUserModel = ldapUserModel;
  }
 
  public void setMailer(IMailer mailer) {
    this.mailer = mailer;
  }
}
TOP

Related Classes of org.butor.dbauth.model.DefaultUserModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.