package eu.dnetlib.goldoa.service;

import eu.dnetlib.goldoa.domain.*;

import java.util.List;

/**
 * Created by antleb on 3/4/15.
 */
public interface UserManager {

	public User getById(String personId) throws PersonManagerException;

	public User getByEmail(String email) throws PersonManagerException;

	public void register(User user) throws PersonManagerException;

	public User login(String email, String password) throws PersonManagerException;

	;

	public User activate(String email, String token) throws PersonManagerException;

	;

	public void resetPassword(String email) throws PersonManagerException;

	public List<Role> getRoles();

	public User saveUser(User user) throws PersonManagerException;

	public List<User> getModerators();

	public void activateUser(String email);

	public void activateUsers(List<String> emails);

	public void deactivateUser(String email);

	public void deactivateUsers(List<String> emails);

	public void acceptUserRole(String email, String roleId);

	public void rejectRole(String email, String roleId);

	public List<User> getUsers();

	String generateId(User user);

	public List<User> getAccountingOfficers();

	public Role getRole(String roleId);

    List<Role> getUserRoles(String email);

	User createInActiveResearcher(String firstname, String lastname, String email, Organization organization) throws OrganizationManagerException, PersonManagerException;
}