Package ch.inftec.ju.db.auth

Source Code of ch.inftec.ju.db.auth.AuthDao

package ch.inftec.ju.db.auth;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import ch.inftec.ju.db.JuDbUtils;
import ch.inftec.ju.db.auth.entity.AuthRole;
import ch.inftec.ju.db.auth.entity.AuthUser;
import ch.inftec.ju.db.auth.repo.AuthRoleRepo;
import ch.inftec.ju.db.auth.repo.AuthUserRepo;

/**
* Helper class for the AuthUser and AuthRole entities.
* @author Martin
*
*/
public class AuthDao {
  @PersistenceContext(unitName="juAuth")
  private EntityManager em;
 
  /**
   * Adds the specified role to the User.
   * <p>
   * If the role doesn't exist yet, it is created automatically
   * @param user Existing user
   * @param roleName Role name
   */
  public void addRole(AuthUser user, String roleName) {
    AuthRoleRepo roleRepo = JuDbUtils.getJpaRepository(this.em, AuthRoleRepo.class);
    AuthUserRepo userRepo = JuDbUtils.getJpaRepository(this.em, AuthUserRepo.class);
   
    // Check if the role exists
    AuthRole role = roleRepo.getByName(roleName);
    if (role == null) {
      role = new AuthRole();
      role.setName(roleName);
      this.em.persist(role);
    }
   
    // Check if the role has already been assigned to the user
    if (roleRepo.getByNameAndUsersId(roleName, user.getId()) == null) {
      // Role hasn't been assigned, so do it
      user.getRoles().add(role);
      role.getUsers().add(user);
      userRepo.save(user);
      roleRepo.save(role);
    }
  }
 
  /**
   * Removes the specified role from the User.
   * <p>
   * If the user doesn't have the role or one of both doesn't exist, nothing is done.
   * @param user
   * @param roleName
   */
  public void removeRole(AuthUser user, String roleName) {
    AuthRoleRepo roleRepo = JuDbUtils.getJpaRepository(this.em, AuthRoleRepo.class);
    AuthUserRepo userRepo = JuDbUtils.getJpaRepository(this.em, AuthUserRepo.class);
   
    // Check if the role exists
    AuthRole role = roleRepo.getByName(roleName);
    if (role != null) {
      if (roleRepo.getByNameAndUsersId(roleName, user.getId()) != null) {
        // User has role assigned, so remove it
        role.getUsers().remove(user);
        user.getRoles().remove(role);
        roleRepo.save(role);
        userRepo.save(user);
      }
    }
  }
}
TOP

Related Classes of ch.inftec.ju.db.auth.AuthDao

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.