Merge branch 'master' of https://github.com/wso2/carbon-device-mgt into theme-migration

merge-requests/7/head
thusithakalugamage 8 years ago
commit ef646800fa

@ -288,12 +288,12 @@ public interface UserManagementService {
httpMethod = "GET", httpMethod = "GET",
value = "Get user list", value = "Get user list",
notes = "If you wish to get the details of all the users registered with EMM, you can do so " notes = "If you wish to get the details of all the users registered with EMM, you can do so "
+ "using the REST API", + "using this REST API",
tags = "User Management") tags = "User Management")
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Successfully fetched the requested role.", message = "OK. \n Successfully fetched the requested users.",
response = BasicUserInfoList.class, response = BasicUserInfoList.class,
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
@ -343,6 +343,36 @@ public interface UserManagementService {
required = false) required = false)
@QueryParam("limit") int limit); @QueryParam("limit") int limit);
@GET
@Path("/count")
@ApiOperation(
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Get user count",
notes = "If you wish to get the user count registered with EMM, you can do so using this REST API",
tags = "User Management")
@ApiResponses(value = {
@ApiResponse(
code = 200,
message = "OK. \n Successfully fetched the user count.",
response = BasicUserInfoList.class,
responseHeaders = {
@ResponseHeader(
name = "Content-Type",
description = "The content type of the body")
}),
@ApiResponse(
code = 406,
message = "Not Acceptable.\n The requested media type is not supported",
response = ErrorResponse.class),
@ApiResponse(
code = 500,
message = "Internal Server Error. \n Server error occurred while fetching the user list.",
response = ErrorResponse.class)
})
@Permission(name = "View Users", permission = "/device-mgt/users/view")
Response getUserCount();
@GET @GET
@Path("/search/usernames") @Path("/search/usernames")
@ApiOperation( @ApiOperation(

@ -316,6 +316,26 @@ public class UserManagementServiceImpl implements UserManagementService {
} }
} }
@GET
@Path("/count")
@Override
public Response getUserCount() {
if (log.isDebugEnabled()) {
log.debug("Getting the user count");
}
try {
UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
int userCount = userStoreManager.listUsers("*", -1).length;
return Response.status(Response.Status.OK).entity(userCount).build();
} catch (UserStoreException e) {
String msg = "Error occurred while retrieving the user count.";
log.error(msg, e);
return Response.serverError().entity(
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
}
}
@GET @GET
@Path("/search/usernames") @Path("/search/usernames")
@Override @Override

@ -40,7 +40,7 @@ deviceModule = function () {
// var deviceCloudService = devicemgtProps["httpsURL"] + "/common/device_manager"; // var deviceCloudService = devicemgtProps["httpsURL"] + "/common/device_manager";
/** /**
* Only GET method is implemented for now since there are no other type of methods used this method. * Only GET method is implemented for now since there are no other type of methods used this method.
* @param url - URL to call the backend without the host * @param url - URL to call the backend without the host
* @param method - HTTP Method (GET, POST) * @param method - HTTP Method (GET, POST)
@ -273,6 +273,9 @@ deviceModule = function () {
deviceObject[constants["DEVICE_PROPERTIES"]] = properties; deviceObject[constants["DEVICE_PROPERTIES"]] = properties;
response["content"] = deviceObject; response["content"] = deviceObject;
return response; return response;
} else if (backendResponse.status == 401) {
response["status"] = "unauthorized";
return response;
} else { } else {
response["status"] = "error"; response["status"] = "error";
return response; return response;

@ -121,48 +121,49 @@
</div> </div>
<div id="remove-certificate-success-content" class="hide"> <div id="remove-certificate-success-content" class="hide">
<div class="content"> <div class="modal-header">
<div class="row"> <h3 class="pull-left modal-title">Done. Certificate was successfully removed.</h3>
<div class="col-lg-5 col-md-6 col-centered"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
<h3>Done. Certificate was successfully removed.</h3> </div>
<div class="buttons"> <div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<a href="#" id="remove-certificate-success-link" class="btn-operations">
Ok </div>
</a> <div class="modal-footer">
</div> <div class="buttons">
</div>
</div> </div>
</div> </div>
</div> </div>
<div id="remove-certificate-error-content" class="hide"> <div id="remove-certificate-error-content" class="hide">
<div class="content"> <div class="modal-header">
<div class="row"> <h3 class="pull-left modal-title">An unexpected error occurred. Please try again later.</h3>
<div class="col-lg-5 col-md-6 col-centered"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
<h3>An unexpected error occurred. Please try again later.</h3> </div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<div class="buttons"> </div>
<a href="#" id="remove-certificate-error-link" class="btn-operations"> <div class="modal-footer">
Ok <div class="buttons">
</a>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<div id="errorCertificateView" class="hide"> <div id="errorCertificateView" class="hide">
<div class="content"> <div class="modal-header">
<div class="row"> <h3 class="pull-left modal-title">
<div class="col-lg-5 col-md-6 col-centered">
<h3>
<span class="fw-stack"> <span class="fw-stack">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-error fw-stack-1x"></i> <i class="fw fw-error fw-stack-1x"></i>
</span> </span>
Unauthorized action! Unauthorized action!
</h3> </h3>
</div> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
</div> </div>
</div> </div>
</div> </div>

@ -3,7 +3,8 @@ CREATE TABLE DM_DEVICE_TYPE (
NAME VARCHAR(300) DEFAULT NULL, NAME VARCHAR(300) DEFAULT NULL,
PROVIDER_TENANT_ID INTEGER NULL, PROVIDER_TENANT_ID INTEGER NULL,
SHARED_WITH_ALL_TENANTS BIT NOT NULL DEFAULT 0, SHARED_WITH_ALL_TENANTS BIT NOT NULL DEFAULT 0,
PRIMARY KEY (ID) PRIMARY KEY (ID),
CONSTRAINT DEVICE_TYPE_NAME UNIQUE(NAME)
); );
CREATE INDEX IDX_DEVICE_TYPE ON DM_DEVICE_TYPE (NAME); CREATE INDEX IDX_DEVICE_TYPE ON DM_DEVICE_TYPE (NAME);
@ -122,12 +123,12 @@ CREATE TABLE DM_PROFILE (
ID INTEGER IDENTITY(1,1) NOT NULL, ID INTEGER IDENTITY(1,1) NOT NULL,
PROFILE_NAME VARCHAR(45) NOT NULL , PROFILE_NAME VARCHAR(45) NOT NULL ,
TENANT_ID INTEGER NOT NULL , TENANT_ID INTEGER NOT NULL ,
DEVICE_TYPE_ID INTEGER NOT NULL , DEVICE_TYPE VARCHAR(300) NOT NULL ,
CREATED_TIME DATETIME NOT NULL , CREATED_TIME DATETIME NOT NULL ,
UPDATED_TIME DATETIME NOT NULL , UPDATED_TIME DATETIME NOT NULL ,
PRIMARY KEY (ID) , PRIMARY KEY (ID) ,
CONSTRAINT DM_PROFILE_DEVICE_TYPE FOREIGN KEY (DEVICE_TYPE_ID) REFERENCES CONSTRAINT DM_PROFILE_DEVICE_TYPE FOREIGN KEY (DEVICE_TYPE) REFERENCES
DM_DEVICE_TYPE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION DM_DEVICE_TYPE (NAME) ON DELETE NO ACTION ON UPDATE NO ACTION
); );
CREATE TABLE DM_POLICY ( CREATE TABLE DM_POLICY (

Loading…
Cancel
Save