1 /* 2 * Copyright (C) 2017-2019 Centre National d'Etudes Spatiales (CNES). 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 3.0 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 17 * MA 02110-1301 USA 18 */ 19 package fr.cnes.doi.db; 20 21 import fr.cnes.doi.db.model.DOIUser; 22 import java.util.List; 23 24 import fr.cnes.doi.exception.DOIDbException; 25 import fr.cnes.doi.utils.spec.Requirement; 26 27 /** 28 * Interface for handling users and role database. This database is used to 29 * authenticate the requests. 30 * 31 * @author Jean-Christophe Malapert (jean-christophe.malapert@cnes.fr) 32 */ 33 @Requirement(reqId = Requirement.DOI_INTER_050, reqName = Requirement.DOI_INTER_050_NAME) 34 public abstract class AbstractUserRoleDBHelper { 35 36 /** 37 * Notification message when an user is added 38 * {@value #ADD_USER_NOTIFICATION}. 39 */ 40 public static final String ADD_USER_NOTIFICATION = "AddUserNotification"; 41 42 /** 43 * Notification message when an user is deleted 44 * {@value #REMOVE_USER_NOTIFICATION}. 45 */ 46 public static final String REMOVE_USER_NOTIFICATION = "RemoveUserNotification"; 47 48 /** 49 * Realm. 50 */ 51 private static final MyMemoryRealm REALM = new MyMemoryRealm(); 52 53 /** 54 * Returns the realm. 55 * 56 * @return the realm 57 */ 58 public MyMemoryRealm getRealm() { 59 return REALM; 60 } 61 62 /** 63 * Returns the allowed users for authentication. 64 * 65 * @return List of users to add for the authentication 66 * @throws fr.cnes.doi.exception.DOIDbException When an error occurs 67 */ 68 public abstract List<DOIUser> getUsers() throws DOIDbException; 69 70 /** 71 * Get users from a specific role. 72 * 73 * @param roleName role name 74 * @return The users related to a specific role 75 * @throws fr.cnes.doi.exception.DOIDbException When an error occurs 76 */ 77 public abstract List<DOIUser> getUsersFromRole(final int roleName) throws DOIDbException; 78 79 /** 80 * Adds an user to a specific role. 81 * 82 * @param user user to add 83 * @param role role 84 * @return True when the user is added otherwise False 85 */ 86 public abstract boolean addUserToRole(final String user, final int role); 87 88 /** 89 * Removes an user from a specific role. 90 * 91 * @param user user to remove 92 * @param role role 93 * @return True when the user is removed otherwise False 94 */ 95 public abstract boolean removeUserToRole(final String user, final int role); 96 97 /** 98 * Add user to Administrators group 99 * 100 * @param admin user to add 101 * @return True when the user is added in the admin group otherwise False 102 */ 103 public abstract boolean setUserToAdminGroup(final String admin); 104 105 /** 106 * Remove user to Administrators group 107 * 108 * @param admin user to add 109 * @return True when the user is removed from the admin group otherwise 110 * False 111 */ 112 public abstract boolean unsetUserFromAdminGroup(final String admin); 113 114 /** 115 * Add a DOI user 116 * 117 * @param username username 118 * @param admin True when the user must be added in the admin group 119 * otherwise False 120 * @return True when the user is added otherwise False 121 */ 122 public abstract boolean addDOIUser(final String username, final Boolean admin); 123 124 /** 125 * Add a DOI user 126 * 127 * @param username username 128 * @param admin True when the user must be added in the admin group 129 * otherwise False 130 * @param email email 131 * @return True when the the user is added otherwise false 132 */ 133 public abstract boolean addDOIUser(final String username, final Boolean admin, 134 final String email); 135 136 /** 137 * Tests if the user exists. 138 * 139 * @param username the user 140 * @return True when the user exists otherwise False 141 */ 142 public abstract boolean isUserExist(final String username); 143 144 /** 145 * Removes the user 146 * 147 * @param username user 148 * @return True when the user is removed otherwise false 149 */ 150 public abstract boolean removeDOIUser(final String username); 151 152 }