mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
* cli changes to update user/account, list by apikeyaccess, domain level setting * UI changes for updating user/account and searchfilter in listview * make the api parameters and setting accessible only to root admin * revert changes to ui/package-lock.json * minor changes to description strings * UT for ApiServer and AccountManagerImpl classes * fix pre-commit failure * Added a constant for the string System * UT for searchForUsers and searchForAccounts * Fix marvin test error * Update schema to use idempotent add column * Fix `updateTemplatePermission` when the UI is set to a language other than English (#9766) * Fix updateTemplatePermission UI in non-english language * Improve fix --------- Co-authored-by: Lucas Martins <lucas.martins@scclouds.com.br> * Added user name uuid to logging * Add events when api key access is changed via api or config setting * fix the userid for api key access update event * Fix ut failure after event logging * Convert drop down to radio-button in edit user and account * Add ApiKeyAccess status in User InfoCard for Users if Api key is generated * Return apiKeyAccess in user and account response only for Root Admin * fixed noredist build failure * Show apikeyaccess on the left panel in the user view for root admins as well * don't show divider if apiKeyAccess is not shown to user * Fix events generated to set Username, Account and Domain of the caller correctly * cli changes to update user/account, list by apikeyaccess, domain level setting * UI changes for updating user/account and searchfilter in listview * make the api parameters and setting accessible only to root admin * revert changes to ui/package-lock.json * minor changes to description strings * UT for ApiServer and AccountManagerImpl classes * fix pre-commit failure * Added a constant for the string System * UT for searchForUsers and searchForAccounts * Fix marvin test error * Update schema to use idempotent add column * Added user name uuid to logging * Add events when api key access is changed via api or config setting * fix the userid for api key access update event * Fix ut failure after event logging * Convert drop down to radio-button in edit user and account * Add ApiKeyAccess status in User InfoCard for Users if Api key is generated * Return apiKeyAccess in user and account response only for Root Admin * fixed noredist build failure * Show apikeyaccess on the left panel in the user view for root admins as well * don't show divider if apiKeyAccess is not shown to user * Fix events generated to set Username, Account and Domain of the caller correctly * Added DB upgrade path from 42000 to 42010 --------- Co-authored-by: Daan Hoogland <daan@onecht.net> Co-authored-by: Lucas Martins <56271185+lucas-a-martins@users.noreply.github.com> Co-authored-by: Lucas Martins <lucas.martins@scclouds.com.br>
149 lines
5.8 KiB
Java
149 lines
5.8 KiB
Java
// Licensed to the Apache Software Foundation (ASF) under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
package com.cloud.user;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import com.cloud.utils.Pair;
|
|
import org.apache.cloudstack.acl.ControlledEntity;
|
|
import org.apache.cloudstack.acl.RoleType;
|
|
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
|
|
import org.apache.cloudstack.api.command.admin.account.CreateAccountCmd;
|
|
import org.apache.cloudstack.api.command.admin.user.GetUserKeysCmd;
|
|
import org.apache.cloudstack.api.command.admin.user.RegisterCmd;
|
|
import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
|
|
|
|
import com.cloud.dc.DataCenter;
|
|
import com.cloud.domain.Domain;
|
|
import com.cloud.exception.PermissionDeniedException;
|
|
import com.cloud.network.vpc.VpcOffering;
|
|
import com.cloud.offering.DiskOffering;
|
|
import com.cloud.offering.NetworkOffering;
|
|
import com.cloud.offering.ServiceOffering;
|
|
import org.apache.cloudstack.auth.UserTwoFactorAuthenticator;
|
|
|
|
public interface AccountService {
|
|
|
|
/**
|
|
* Creates a new user and account, stores the password as is so encrypted passwords are recommended.
|
|
* @return the user if created successfully, null otherwise
|
|
*/
|
|
UserAccount createUserAccount(CreateAccountCmd accountCmd);
|
|
|
|
UserAccount createUserAccount(String userName, String password, String firstName, String lastName, String email, String timezone, String accountName, Account.Type accountType,
|
|
Long roleId, Long domainId, String networkDomain, Map<String, String> details, String accountUUID, String userUUID, User.Source source);
|
|
|
|
/**
|
|
* Locks a user by userId. A locked user cannot access the API, but will still have running VMs/IP addresses
|
|
* allocated/etc.
|
|
*/
|
|
UserAccount lockUser(long userId);
|
|
|
|
Account getSystemAccount();
|
|
|
|
User getSystemUser();
|
|
|
|
User createUser(String userName, String password, String firstName, String lastName, String email, String timeZone, String accountName, Long domainId, String userUUID);
|
|
|
|
User createUser(String userName, String password, String firstName, String lastName, String email, String timeZone, String accountName, Long domainId, String userUUID,
|
|
User.Source source);
|
|
|
|
boolean isAdmin(Long accountId);
|
|
|
|
Account finalizeOwner(Account caller, String accountName, Long domainId, Long projectId);
|
|
|
|
Account getActiveAccountByName(String accountName, Long domainId);
|
|
|
|
UserAccount getActiveUserAccount(String username, Long domainId);
|
|
|
|
List<UserAccount> getActiveUserAccountByEmail(String email, Long domainId);
|
|
|
|
UserAccount updateUser(UpdateUserCmd updateUserCmd);
|
|
|
|
Account getActiveAccountById(long accountId);
|
|
|
|
Account getAccount(long accountId);
|
|
|
|
User getActiveUser(long userId);
|
|
|
|
User getUserIncludingRemoved(long userId);
|
|
|
|
boolean isRootAdmin(Long accountId);
|
|
|
|
boolean isDomainAdmin(Long accountId);
|
|
|
|
boolean isNormalUser(long accountId);
|
|
|
|
User getActiveUserByRegistrationToken(String registrationToken);
|
|
|
|
void markUserRegistered(long userId);
|
|
|
|
public String[] createApiKeyAndSecretKey(RegisterCmd cmd);
|
|
|
|
public String[] createApiKeyAndSecretKey(final long userId);
|
|
|
|
UserAccount getUserByApiKey(String apiKey);
|
|
|
|
RoleType getRoleType(Account account);
|
|
|
|
void checkAccess(Account account, Domain domain) throws PermissionDeniedException;
|
|
|
|
void checkAccess(Account account, AccessType accessType, boolean sameOwner, ControlledEntity... entities) throws PermissionDeniedException;
|
|
|
|
void checkAccess(Account account, ServiceOffering so, DataCenter zone) throws PermissionDeniedException;
|
|
|
|
void checkAccess(Account account, DiskOffering dof, DataCenter zone) throws PermissionDeniedException;
|
|
|
|
void checkAccess(Account account, NetworkOffering nof, DataCenter zone) throws PermissionDeniedException;
|
|
|
|
void checkAccess(Account account, VpcOffering vof, DataCenter zone) throws PermissionDeniedException;
|
|
|
|
void checkAccess(User user, ControlledEntity entity);
|
|
|
|
void checkAccess(Account account, AccessType accessType, boolean sameOwner, String apiName, ControlledEntity... entities) throws PermissionDeniedException;
|
|
|
|
void validateAccountHasAccessToResource(Account account, AccessType accessType, Object resource);
|
|
|
|
Long finalyzeAccountId(String accountName, Long domainId, Long projectId, boolean enabledOnly);
|
|
|
|
/**
|
|
* returns the user account object for a given user id
|
|
* @param userId user id
|
|
* @return {@link UserAccount} object if it exists else null
|
|
*/
|
|
UserAccount getUserAccountById(Long userId);
|
|
|
|
public Pair<Boolean, Map<String, String>> getKeys(GetUserKeysCmd cmd);
|
|
|
|
public Pair<Boolean, Map<String, String>> getKeys(Long userId);
|
|
|
|
/**
|
|
* Lists user two-factor authentication provider plugins
|
|
* @return list of providers
|
|
*/
|
|
List<UserTwoFactorAuthenticator> listUserTwoFactorAuthenticationProviders();
|
|
|
|
/**
|
|
* Finds user two factor authenticator provider by domain ID
|
|
* @param domainId domain id
|
|
* @return backup provider
|
|
*/
|
|
UserTwoFactorAuthenticator getUserTwoFactorAuthenticationProvider(final Long domainId);
|
|
|
|
}
|