allow mobile deletion if used by mobile bundle
This commit is contained in:
parent
0c200d963e
commit
ad0e7fbcbc
@ -38,8 +38,8 @@ CREATE TABLE IF NOT EXISTS mobile_app_bundle (
|
||||
ios_app_id uuid UNIQUE,
|
||||
layout_config varchar(16384),
|
||||
oauth2_enabled boolean,
|
||||
CONSTRAINT fk_android_app_id FOREIGN KEY (android_app_id) REFERENCES mobile_app(id),
|
||||
CONSTRAINT fk_ios_app_id FOREIGN KEY (ios_app_id) REFERENCES mobile_app(id)
|
||||
CONSTRAINT fk_android_app_id FOREIGN KEY (android_app_id) REFERENCES mobile_app(id) ON DELETE SET NULL,
|
||||
CONSTRAINT fk_ios_app_id FOREIGN KEY (ios_app_id) REFERENCES mobile_app(id) ON DELETE SET NULL
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS mobile_app_bundle_tenant_id ON mobile_app_bundle(tenant_id);
|
||||
|
||||
|
||||
@ -41,6 +41,7 @@ import org.thingsboard.server.common.data.mobile.LoginMobileInfo;
|
||||
import org.thingsboard.server.common.data.mobile.UserMobileInfo;
|
||||
import org.thingsboard.server.common.data.mobile.app.MobileApp;
|
||||
import org.thingsboard.server.common.data.mobile.app.MobileAppVersionInfo;
|
||||
import org.thingsboard.server.common.data.mobile.app.StoreInfo;
|
||||
import org.thingsboard.server.common.data.mobile.bundle.MobileAppBundle;
|
||||
import org.thingsboard.server.common.data.mobile.layout.MobilePage;
|
||||
import org.thingsboard.server.common.data.oauth2.OAuth2ClientLoginInfo;
|
||||
@ -55,6 +56,7 @@ import org.thingsboard.server.service.security.permission.Operation;
|
||||
import org.thingsboard.server.service.security.permission.Resource;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -80,10 +82,12 @@ public class MobileAppController extends BaseController {
|
||||
public LoginMobileInfo getLoginMobileInfo(@Parameter(description = "Mobile application package name")
|
||||
@RequestParam String pkgName,
|
||||
@Parameter(description = "Platform type", schema = @Schema(allowableValues = {"ANDROID", "IOS"}))
|
||||
@RequestParam PlatformType platform) {
|
||||
@RequestParam PlatformType platform) throws ThingsboardException {
|
||||
List<OAuth2ClientLoginInfo> oauth2Clients = oAuth2ClientService.findOAuth2ClientLoginInfosByMobilePkgNameAndPlatformType(pkgName, platform);
|
||||
MobileApp mobileApp = mobileAppService.findMobileAppByPkgNameAndPlatformType(pkgName, platform);
|
||||
return new LoginMobileInfo(oauth2Clients, mobileApp != null ? mobileApp.getVersionInfo() : null);
|
||||
MobileApp mobileApp = checkNotNull(mobileAppService.findMobileAppByPkgNameAndPlatformType(pkgName, platform));
|
||||
StoreInfo storeInfo = Optional.ofNullable(mobileApp).map(MobileApp::getStoreInfo).orElse(null);
|
||||
MobileAppVersionInfo versionInfo = Optional.ofNullable(mobileApp).map(MobileApp::getVersionInfo).orElse(null);
|
||||
return new LoginMobileInfo(oauth2Clients, storeInfo, versionInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "Get user mobile app basic info (getUserMobileInfo)", notes = AVAILABLE_FOR_ANY_AUTHORIZED_USER)
|
||||
@ -97,17 +101,10 @@ public class MobileAppController extends BaseController {
|
||||
User user = userService.findUserById(securityUser.getTenantId(), securityUser.getId());
|
||||
HomeDashboardInfo homeDashboardInfo = securityUser.isSystemAdmin() ? null : getHomeDashboardInfo(securityUser, user.getAdditionalInfo());
|
||||
MobileAppBundle mobileAppBundle = mobileAppBundleService.findMobileAppBundleByPkgNameAndPlatform(securityUser.getTenantId(), pkgName, platform);
|
||||
return new UserMobileInfo(user, homeDashboardInfo, getVisiblePages(mobileAppBundle));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "Get mobile app version info (getMobileVersionInfo)")
|
||||
@GetMapping(value = "/mobile/versionInfo")
|
||||
public MobileAppVersionInfo getMobileVersionInfo(@Parameter(description = "Mobile application package name")
|
||||
@RequestParam String pkgName,
|
||||
@Parameter(description = "Platform type", schema = @Schema(allowableValues = {"ANDROID", "IOS"}))
|
||||
@RequestParam PlatformType platform) {
|
||||
MobileApp mobileApp = mobileAppService.findMobileAppByPkgNameAndPlatformType(pkgName, platform);
|
||||
return mobileApp != null ? mobileApp.getVersionInfo() : null;
|
||||
StoreInfo storeInfo = Optional.ofNullable(mobileApp).map(MobileApp::getStoreInfo).orElse(null);
|
||||
MobileAppVersionInfo versionInfo = Optional.ofNullable(mobileApp).map(MobileApp::getVersionInfo).orElse(null);
|
||||
return new UserMobileInfo(user, storeInfo, versionInfo, homeDashboardInfo, getVisiblePages(mobileAppBundle));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "Save Or update Mobile app (saveMobileApp)",
|
||||
|
||||
@ -16,9 +16,12 @@
|
||||
package org.thingsboard.server.common.data.mobile;
|
||||
|
||||
import org.thingsboard.server.common.data.mobile.app.MobileAppVersionInfo;
|
||||
import org.thingsboard.server.common.data.mobile.app.StoreInfo;
|
||||
import org.thingsboard.server.common.data.oauth2.OAuth2ClientLoginInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record LoginMobileInfo(List<OAuth2ClientLoginInfo> oAuth2ClientLoginInfos, MobileAppVersionInfo versionInfo) {
|
||||
public record LoginMobileInfo(List<OAuth2ClientLoginInfo> oAuth2ClientLoginInfos,
|
||||
StoreInfo storeInfo,
|
||||
MobileAppVersionInfo versionInfo) {
|
||||
}
|
||||
|
||||
@ -18,7 +18,13 @@ package org.thingsboard.server.common.data.mobile;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.thingsboard.server.common.data.HomeDashboardInfo;
|
||||
import org.thingsboard.server.common.data.User;
|
||||
import org.thingsboard.server.common.data.mobile.app.MobileAppVersionInfo;
|
||||
import org.thingsboard.server.common.data.mobile.app.StoreInfo;
|
||||
|
||||
|
||||
public record UserMobileInfo(User user, HomeDashboardInfo homeDashboardInfo, JsonNode pages) {
|
||||
public record UserMobileInfo(User user,
|
||||
StoreInfo storeInfo,
|
||||
MobileAppVersionInfo versionInfo,
|
||||
HomeDashboardInfo homeDashboardInfo,
|
||||
JsonNode pages) {
|
||||
}
|
||||
|
||||
@ -641,8 +641,8 @@ CREATE TABLE IF NOT EXISTS mobile_app_bundle (
|
||||
ios_app_id uuid UNIQUE,
|
||||
layout_config varchar(16384),
|
||||
oauth2_enabled boolean,
|
||||
CONSTRAINT fk_android_app_id FOREIGN KEY (android_app_id) REFERENCES mobile_app(id),
|
||||
CONSTRAINT fk_ios_app_id FOREIGN KEY (ios_app_id) REFERENCES mobile_app(id)
|
||||
CONSTRAINT fk_android_app_id FOREIGN KEY (android_app_id) REFERENCES mobile_app(id) ON DELETE SET NULL,
|
||||
CONSTRAINT fk_ios_app_id FOREIGN KEY (ios_app_id) REFERENCES mobile_app(id) ON DELETE SET NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS domain_oauth2_client (
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user