Author: [email protected]
Date: Tue Nov 22 16:27:22 2011
New Revision: 1748
Log:
Removed:
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/TenantAccountService.java
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/service/TenantAccountServiceImpl.java
Modified:
sandbox/ivol/amdatu-gadget-container/gadget-container-release/pom.xml
sandbox/ivol/amdatu-gadget-container/gadget-container-release/src/main/resources/config/org.amdatu.gadgetcontainer.mail.service.cfg
sandbox/ivol/amdatu-gadget-container/mail-service/src/main/java/org/amdatu/gadgetcontainer/email/service/EMailServiceImpl.java
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/pom.xml
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/osgi/Activator.java
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/service/TenantRESTServiceImpl.java
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/jsp/TenantGadget.jsp
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/css/tenant.css
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/js/tenant.js
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/js/util.js
Modified: sandbox/ivol/amdatu-gadget-container/gadget-container-release/pom.xml
==============================================================================
--- sandbox/ivol/amdatu-gadget-container/gadget-container-release/pom.xml
(original)
+++ sandbox/ivol/amdatu-gadget-container/gadget-container-release/pom.xml
Tue Nov 22 16:27:22 2011
@@ -347,6 +347,11 @@
<artifactId>org.amdatu.gadgetcontainer.tenant.service</artifactId>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>org.amdatu.gadgetcontainer</groupId>
+ <artifactId>org.amdatu.gadgetcontainer.mail.service</artifactId>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
<build>
Modified:
sandbox/ivol/amdatu-gadget-container/gadget-container-release/src/main/resources/config/org.amdatu.gadgetcontainer.mail.service.cfg
==============================================================================
---
sandbox/ivol/amdatu-gadget-container/gadget-container-release/src/main/resources/config/org.amdatu.gadgetcontainer.mail.service.cfg
(original)
+++
sandbox/ivol/amdatu-gadget-container/gadget-container-release/src/main/resources/config/org.amdatu.gadgetcontainer.mail.service.cfg
Tue Nov 22 16:27:22 2011
@@ -1,17 +1,17 @@
# The SMTP server
-smtp.server=smtp.gx.nl
+mail.smtp.host=smtp.gx.nl
-# The SMTP server port
-smtp.port=21
+# The SMTP server port (optional)
+mail.smtp.port=
-# Authorization mechanism of the SMTP server
-smtp.auth=
+# Authorization mechanism of the SMTP server (optional)
+mail.smtp.auth=
-# Username required to send emails
-smtp.username=
+# Username required to send emails (optional)
+mail.smtp.username=
-# Password of that user
-smtp.password=
+# Password of that user (optional)
+mail.smtp.password=
# The email address on who's behalf the mail is send
[email protected]
\ No newline at end of file
Modified:
sandbox/ivol/amdatu-gadget-container/mail-service/src/main/java/org/amdatu/gadgetcontainer/email/service/EMailServiceImpl.java
==============================================================================
---
sandbox/ivol/amdatu-gadget-container/mail-service/src/main/java/org/amdatu/gadgetcontainer/email/service/EMailServiceImpl.java
(original)
+++
sandbox/ivol/amdatu-gadget-container/mail-service/src/main/java/org/amdatu/gadgetcontainer/email/service/EMailServiceImpl.java
Tue Nov 22 16:27:22 2011
@@ -42,6 +42,7 @@
private final static String AUTH = "mail.smtp.auth";
private final static String USERNAME = "mail.smtp.username";
private final static String PASSWORD = "mail.smtp.password";
+ private final static String FROM = "from.address";
// Injected service dependencies
private volatile LogService m_logService;
@@ -68,7 +69,7 @@
m_username = properties.get(USERNAME).toString();
m_password = properties.get(PASSWORD).toString();
- m_fromAddress = properties.get("from.address").toString();
+ m_fromAddress = properties.get(FROM).toString();
}
}
Modified: sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/pom.xml
==============================================================================
--- sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/pom.xml
(original)
+++ sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/pom.xml
Tue Nov 22 16:27:22 2011
@@ -86,6 +86,10 @@
<type>bundle</type>
</dependency>
<dependency>
+ <groupId>org.amdatu.auth</groupId>
+ <artifactId>org.amdatu.auth.tokenprovider</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
@@ -121,19 +125,11 @@
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Embed-Dependency>*;scope=compile;artifactId=json|mail|org.amdatu.libraries.utilities|commons-codec</Embed-Dependency>
<Embed-Transitive>false</Embed-Transitive>
- <Import-Package>*;resolution:=optional</Import-Package>
-
- <!--
+ <Import-Package>
!sun.security.util,
- !javax.microedition.io,
- !org.apache.coyote.*,
- !org.apache.tomcat.*,
- !org.apache.tools.ant.*,
- !org.apache.xalan.*,
- !org.apache.xml.utils,
- !org.apache.xpath.*,
+ org.amdatu.opensocial.tenant.gadget,
*
- -->
+ </Import-Package>
</instructions>
</configuration>
</plugin>
Modified:
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/osgi/Activator.java
==============================================================================
---
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/osgi/Activator.java
(original)
+++
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/osgi/Activator.java
Tue Nov 22 16:27:22 2011
@@ -22,9 +22,7 @@
import org.amdatu.gadgetcontainer.email.EMailService;
import org.amdatu.libraries.utilities.osgi.ServiceDependentActivator;
import org.amdatu.opensocial.gadgetmanagement.GadgetDefinitionProvider;
-import org.amdatu.opensocial.tenant.gadget.TenantAccountService;
import org.amdatu.opensocial.tenant.gadget.TenantListener;
-import org.amdatu.opensocial.tenant.gadget.service.TenantAccountServiceImpl;
import org.amdatu.opensocial.tenant.gadget.service.TenantConfigDAO;
import org.amdatu.opensocial.tenant.gadget.service.TenantConfigDAOImpl;
import org.amdatu.opensocial.tenant.gadget.service.TenantGadgetDefinition;
@@ -98,13 +96,6 @@
.setImplementation(TenantConfigDAOImpl.class)
.add(createServiceDependency().setService(ConfigurationAdmin.class).setRequired(true)));
- // Create and register the tenant account service
- manager.add(
- createComponent()
- .setInterface(new String[] {
TenantAccountService.class.getName() }, null)
- .setImplementation(TenantAccountServiceImpl.class)
-
.add(createServiceDependency().setService(EMailService.class).setRequired(true)));
-
// Create and register the tenant listener service
manager.add(
createComponent()
Modified:
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/service/TenantRESTServiceImpl.java
==============================================================================
---
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/service/TenantRESTServiceImpl.java
(original)
+++
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/java/org/amdatu/opensocial/tenant/gadget/service/TenantRESTServiceImpl.java
Tue Nov 22 16:27:22 2011
@@ -16,6 +16,9 @@
package org.amdatu.opensocial.tenant.gadget.service;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -35,20 +38,32 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
+import org.amdatu.auth.tokenprovider.InvalidTokenException;
+import org.amdatu.auth.tokenprovider.TokenProvider;
+import org.amdatu.auth.tokenprovider.TokenProviderException;
import org.amdatu.core.tenant.Tenant;
+import org.amdatu.core.tenant.TenantException;
import org.amdatu.gadgetcontainer.email.EMailService;
import org.amdatu.libraries.utilities.rest.AtomSyndicationLink;
import org.amdatu.opensocial.tenant.gadget.TenantListener;
import org.amdatu.web.rest.jaxrs.RESTService;
+import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.ServiceDependency;
+import org.osgi.framework.Constants;
import org.osgi.service.log.LogService;
+import org.osgi.service.useradmin.User;
+import org.osgi.service.useradmin.UserAdmin;
@Path("tenants")
public class TenantRESTServiceImpl implements RESTService {
// The base URL for this REST service
static String REST_URL = "/rest/tenants";
-
- private static String VALID_HOSTNAME_REGEX =
"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\\-]*[A-Za-z0-9])$";
+ private static final String DEFAULT_ADMIN_GROUP = "Administrators";
+
+ private static String VALID_HOSTNAME_REGEX =
+
"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\\-]*[A-Za-z0-9])$";
// HTTP caching for this REST interface
protected static CacheControl NO_CACHE_CONTROL;
@@ -62,12 +77,53 @@
private volatile TenantConfigDAO m_tenantDAO;
private volatile EMailService m_mailService;
private volatile TenantListener m_tenantListener;
-
+ private volatile UserAdmin m_userAdmin;
+ private volatile TokenProvider m_tokenProvider;
+ private volatile DependencyManager m_dependencyManager;
+
+ /**
+ * The init() method is invoked by the Felix dependency manager.
+ *
+ * @throws TenantException
+ */
+ public void init(final Component component) throws TenantException {
+ List<ServiceDependency> dependencies = new
ArrayList<ServiceDependency>();
+
+ // Create dynamic service dependencies on UserAdmin and token provider
for 'our' tenant
+ dependencies.add(m_dependencyManager.createServiceDependency()
+ .setService(TokenProvider.class,
getTenantFilter(TokenProvider.class)).setRequired(true)
+ .setInstanceBound(true));
+ dependencies.add(m_dependencyManager.createServiceDependency()
+ .setService(UserAdmin.class,
getTenantFilter(UserAdmin.class)).setRequired(true).setInstanceBound(true));
+
+ component.add(dependencies);
+
+ m_logService.log(LogService.LOG_INFO,
+ getClass().getName() + " service initialized for tenant '" +
m_tenant.getId() + "'");
+ }
+
+ private String getTenantFilter(Class<?> clazz) {
+ return "(&(" + Tenant.TENANT_ID_SERVICEPROPERTY + "=" +
m_tenant.getId() + ")(" + Constants.OBJECTCLASS
+ + "=" + clazz.getName() + "))";
+ }
+
public void start() {
m_logService.log(LogService.LOG_INFO, "Tenant management REST service
started");
}
/**
+ * This method can be used to check the availability of the Login Service.
+ *
+ * @return The text "Login service online"
+ */
+ @GET
+ @Produces({ MediaType.TEXT_PLAIN })
+ @Path("status")
+ public String status() {
+ return "Tenant service online";
+ }
+
+ /**
* Returns available tenants.
* Example: GET /rest/tenants
*
@@ -77,24 +133,31 @@
@GET
@Produces({ MediaType.APPLICATION_JSON })
public Response getTenants(@Context final HttpServletRequest request) {
- TenantsBean tenantsBean = new TenantsBean();
- try {
- for (TenantBean tenant : m_tenantDAO.getTenants()) {
- String href = request.getContextPath() + REST_URL + "/" +
tenant.getId();
- tenant.addLink(new
AtomSyndicationLink().setHref(href).setRel("edit").setType("application/json"));
- if (!tenant.getId().equals(m_tenant.getId())) {
- // Only provide delete link if the tenant is not the same
as the current tenant
- tenant
- .addLink(new
AtomSyndicationLink().setHref(href).setRel("delete").setType("application/json"));
+ if (isAuthorized(request)) {
+ TenantsBean tenantsBean = new TenantsBean();
+ try {
+ for (TenantBean tenant : m_tenantDAO.getTenants()) {
+ String href = request.getContextPath() + REST_URL + "/" +
tenant.getId();
+ tenant.addLink(new
AtomSyndicationLink().setHref(href).setRel("edit").setType("application/json"));
+ if (!tenant.getId().equals(m_tenant.getId())) {
+ // Only provide delete link if the tenant is not the
same as the current tenant
+ tenant
+ .addLink(new
AtomSyndicationLink().setHref(href).setRel("delete")
+ .setType("application/json"));
+ }
+ tenantsBean.addTenant(tenant);
}
- tenantsBean.addTenant(tenant);
}
+ catch (Exception e) {
+ m_logService.log(LogService.LOG_ERROR, "An error occured while
retrieving tenants", e);
+ throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
+ }
+
+ return Response.ok(tenantsBean,
MediaType.APPLICATION_JSON_TYPE).cacheControl(NO_CACHE_CONTROL).build();
}
- catch (Exception e) {
- throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
+ else {
+ return
Response.status(org.apache.http.HttpStatus.SC_UNAUTHORIZED).cacheControl(NO_CACHE_CONTROL).build();
}
-
- return Response.ok(tenantsBean,
MediaType.APPLICATION_JSON_TYPE).cacheControl(NO_CACHE_CONTROL).build();
}
/**
@@ -108,18 +171,23 @@
@Path("/{id}")
@Produces({ MediaType.APPLICATION_JSON })
public Response getTenant(@PathParam("id") final String id, @Context final
HttpServletRequest request) {
- try {
- TenantBean tenant = m_tenantDAO.getTenant(id);
- if (tenant != null) {
- return Response.ok(tenant,
MediaType.APPLICATION_JSON_TYPE).cacheControl(NO_CACHE_CONTROL)
- .build();
+ if (isAuthorized(request)) {
+ try {
+ TenantBean tenant = m_tenantDAO.getTenant(id);
+ if (tenant != null) {
+ return Response.ok(tenant,
MediaType.APPLICATION_JSON_TYPE).cacheControl(NO_CACHE_CONTROL)
+ .build();
+ }
+ else {
+ return
Response.noContent().cacheControl(NO_CACHE_CONTROL).build();
+ }
}
- else {
- return
Response.noContent().cacheControl(NO_CACHE_CONTROL).build();
+ catch (Exception e) {
+ throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
}
}
- catch (Exception e) {
- throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
+ else {
+ return
Response.status(org.apache.http.HttpStatus.SC_UNAUTHORIZED).cacheControl(NO_CACHE_CONTROL).build();
}
}
@@ -133,32 +201,65 @@
@Consumes("application/x-www-form-urlencoded")
@Path("/{id}")
public Response setTenant(@PathParam("id") final String id,
@FormParam("name") final String name,
- @FormParam("hostname") final String hostname, @FormParam("email")
final String email) {
+ @FormParam("hostname") final String hostname, @FormParam("email")
final String email,
+ @Context final HttpServletRequest request) {
+ if (isAuthorized(request)) {
+ try {
+ if (!validate(id, hostname, email)) {
+ return
Response.status(Status.BAD_REQUEST).cacheControl(NO_CACHE_CONTROL).build();
+ }
+ if (m_tenantDAO.setTenant(id, name, hostname)) {
+ // Add the created tenant to the listener service, such
that an account
+ // is created and send to the email address as soon as the
tenant is created
+ m_tenantListener.addToQueue(id, name, hostname, email);
+ }
+ }
+ catch (Exception e) {
+ m_logService.log(LogService.LOG_ERROR, "An error occured.", e);
+ throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
+ }
+
+ return Response.ok().cacheControl(NO_CACHE_CONTROL).build();
+ }
+ else {
+ return
Response.status(org.apache.http.HttpStatus.SC_UNAUTHORIZED).cacheControl(NO_CACHE_CONTROL).build();
+ }
+ }
+
+ /**
+ * Deletes an existing tenant.
+ * Example: DELETE /rest/tenants/default_tenant
+ */
+ @DELETE
+ @Path("/{id}")
+ public Response deleteTenant(@PathParam("id") final String id, @Context
final HttpServletRequest request) {
+ if (isAuthorized(request)) {
+ TenantBean tenant = null;
try {
- if (!validate(id, hostname, email)) {
- return
Response.status(Status.BAD_REQUEST).cacheControl(NO_CACHE_CONTROL).build();
+ if (m_tenantDAO.deleteTenant(id)) {
+ return Response.ok(tenant,
MediaType.APPLICATION_JSON_TYPE).cacheControl(NO_CACHE_CONTROL)
+ .build();
}
- if (m_tenantDAO.setTenant(id, name, hostname)) {
- // Add the created tenant to the listener service, such that
an account
- // is created and send to the email address as soon as the
tenant is created
- m_tenantListener.addToQueue(id, name, hostname, email);
+ else {
+ return
Response.noContent().cacheControl(NO_CACHE_CONTROL).build();
}
}
catch (Exception e) {
- m_logService.log(LogService.LOG_ERROR, "An error occured.", e);
throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
}
-
- return Response.ok().cacheControl(NO_CACHE_CONTROL).build();
+ }
+ else {
+ return
Response.status(org.apache.http.HttpStatus.SC_UNAUTHORIZED).cacheControl(NO_CACHE_CONTROL).build();
+ }
}
-
+
private boolean validate(String id, String hostname, String email) throws
IOException {
- boolean valid = true;//validateHostname(hostname);
+ boolean valid = true;// validateHostname(hostname);
valid &= validateHostnameInUse(id, hostname);
valid &= m_mailService.validateEmailAddress(email);
return valid;
}
-
+
private boolean validateHostname(String hostname) {
// Validate if another tenant exists that did already claim this
hostname
Pattern p = Pattern.compile(VALID_HOSTNAME_REGEX);
@@ -168,7 +269,7 @@
}
return true;
}
-
+
private boolean validateHostnameInUse(String id, String hostname) throws
IOException {
// Validate if another tenant exists that did already claim this
hostname
for (TenantBean tenant : m_tenantDAO.getTenants()) {
@@ -180,26 +281,29 @@
}
return true;
}
-
- /**
- * Deletes an existing tenant.
- * Example: DELETE /rest/tenants/default_tenant
- */
- @DELETE
- @Path("/{id}")
- public Response deleteTenant(@PathParam("id") final String id) {
- TenantBean tenant = null;
- try {
- if (m_tenantDAO.deleteTenant(id)) {
- return Response.ok(tenant,
MediaType.APPLICATION_JSON_TYPE).cacheControl(NO_CACHE_CONTROL)
- .build();
+
+ private boolean isAuthorized(final HttpServletRequest request) {
+ String token = m_tokenProvider.getTokenFromRequest(request);
+ if (token != null) {
+ try {
+ Map<String, String> attributes =
m_tokenProvider.verifyToken(token);
+ if (attributes.containsKey(TokenProvider.USERNAME)) {
+ String userName = attributes.get(TokenProvider.USERNAME);
+ if (userName != null && !userName.isEmpty()) {
+ User user = (User) m_userAdmin.getRole(userName);
+ if (user != null) {
+ return
m_userAdmin.getAuthorization(user).hasRole(DEFAULT_ADMIN_GROUP);
+ }
+ }
+ }
}
- else {
- return
Response.noContent().cacheControl(NO_CACHE_CONTROL).build();
+ catch (TokenProviderException e) {
+ // Ignore invalid tokens
+ }
+ catch (InvalidTokenException e) {
+ // Ignore invalid tokens
}
}
- catch (Exception e) {
- throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
- }
+ return false;
}
}
Modified:
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/jsp/TenantGadget.jsp
==============================================================================
---
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/jsp/TenantGadget.jsp
(original)
+++
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/jsp/TenantGadget.jsp
Tue Nov 22 16:27:22 2011
@@ -45,30 +45,35 @@
<script type="text/javascript"
src="${gadgetBaseUrl}/static/js/tenant.js"></script>
<script type="text/javascript"
src="${gadgetBaseUrl}/static/js/util.js"></script>
- <p>
- <fieldset id="tenants">
- <legend id="tenants_legend">__MSG_tenants__</legend>
- <div id="tenants"></div>
- </fieldset>
- </p>
-
- <p>
- <input type="button" id="new_tenant_button" value="__MSG_new_tenant__"
onclick="javascript:showAddTenant();"/>
- </p>
+ <div id="all">
+ <p>
+ <fieldset id="tenants">
+ <legend id="tenants_legend">__MSG_tenants__</legend>
+ <div id="tenants"></div>
+ </fieldset>
+ </p>
+
+ <p>
+ <input type="button" id="new_tenant_button" value="__MSG_new_tenant__"
onclick="javascript:showAddTenant();"/>
+ </p>
+
+ <p>
+ <fieldset id="tenant_details" style="display:none;visibility:hidden">
+ <legend id="tenant_details_legend">__MSG_details__</legend>
+ <table width="95%">
+ <tr><td>__MSG_id__</td><td><input type="edit" id="tenant_id"
disabled="disabled"/></td></tr>
+ <tr><td>__MSG_name__</td><td><input type="edit" id="tenant_name"
value=""/></td></tr>
+ <tr><td>__MSG_hostname__</td><td><input type="edit"
id="tenant_hostname" value=""/></td></tr>
+ <tr id="tenant_email_row"><td>__MSG_email__*</td><td><input
type="edit" id="tenant_email" value=""/></td></tr>
+ </table>
+ <div id="comment" class="comment"
style="display:none;visibility:hidden">* __MSG_email_comment__</div>
+ <input type="submit" id="tenant_save" value="__MSG_save__"
onclick="javascript:saveTenant();"/>
+ <input type="button" id="cancel" value="__MSG_cancel__"
onclick="javascript:cancelEdit();"/>
+ </fieldset>
+ </p>
+ </div>
<p>
- <fieldset id="tenant_details" style="display:none;visibility:hidden">
- <legend id="tenant_details_legend">__MSG_details__</legend>
- <table width="95%">
- <tr><td>__MSG_id__</td><td><input type="edit" id="tenant_id"
disabled="disabled"/></td></tr>
- <tr><td>__MSG_name__</td><td><input type="edit" id="tenant_name"
value=""/></td></tr>
- <tr><td>__MSG_hostname__</td><td><input type="edit"
id="tenant_hostname" value=""/></td></tr>
- <tr id="tenant_email_row"><td>__MSG_email__*</td><td><input
type="edit" id="tenant_email" value=""/></td></tr>
- </table>
- <div id="comment" class="comment"
style="display:none;visibility:hidden">* __MSG_email_comment__</div>
- <input type="submit" id="tenant_save" value="__MSG_save__"
onclick="javascript:saveTenant();"/>
- <input type="button" id="cancel" value="__MSG_cancel__"
onclick="javascript:cancelEdit();"/>
- </fieldset>
<div id="infobox"></div>
</p>
Modified:
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/css/tenant.css
==============================================================================
---
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/css/tenant.css
(original)
+++
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/css/tenant.css
Tue Nov 22 16:27:22 2011
@@ -19,9 +19,34 @@
background: #fff;
}
+div#statusbar-wrapper {
+font-size: 6px;
+background: #FF0000;
+}
+
+div.statusbar-wrapper {
+font-size: 6px;
+background: #FF0000;
+}
+
+div#statusbar-header {
+font-size: 6px;
+background: #FF0000;
+}
+
+div.statusbar-header {
+font-size: 6px;
+background: #FF0000;
+}
+
+div.statusbar-header-text {
+font-size: 6px;
+background: #FF0000;
+}
+
p {
font-family: arial, sans-serif;
- font-size: 13px;
+ font-size: 3px;
}
table th {
Modified:
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/js/tenant.js
==============================================================================
---
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/js/tenant.js
(original)
+++
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/js/tenant.js
Tue Nov 22 16:27:22 2011
@@ -2,26 +2,19 @@
function loadTenants() {
var url = "/rest/tenants";
- var params = {};
- params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.JSON;
- params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
-
+ var params = getDefaultParams(gadgets.io.ContentType.JSON,
gadgets.io.MethodType.GET);
url = getBaseUrl() + addNoCache(url);
gadgets.io.makeRequest(url, onTenantsLoaded, params);
}
function loadTenant(url, callback) {
- var params = {};
- params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.JSON;
- params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
+ var params = getDefaultParams(gadgets.io.ContentType.JSON,
gadgets.io.MethodType.GET);
url = getBaseUrl() + addNoCache(unescape(url));
gadgets.io.makeRequest(url, callback, params);
}
function doSaveTenant(url, callback) {
- var params = {};
- params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.JSON;
- params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
+ var params = getDefaultParams(gadgets.io.ContentType.JSON,
gadgets.io.MethodType.POST);
var name = document.getElementById('tenant_name').value;
var hostname = document.getElementById('tenant_hostname').value;
var email = document.getElementById('tenant_email').value;
@@ -32,9 +25,7 @@
}
function doDeleteTenant(url, callback) {
- var params = {};
- params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.JSON;
- params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.DELETE;
+ var params = getDefaultParams(gadgets.io.ContentType.JSON,
gadgets.io.MethodType.DELETE);
url = getBaseUrl() + addNoCache(unescape(url));
gadgets.io.makeRequest(url, callback, params);
}
@@ -76,6 +67,9 @@
$(".stripeMe tr").mouseover(function() {$(this).addClass("over");});
$(".stripeMe tr").mouseout(function() {$(this).removeClass("over");});
$(".stripeMe tr:even").addClass("alt");
+ } else if (response.rc == 401) {
+ hide('all');
+ showError("You are not authorized to manage tenants. You must be an
Administrator to be able to manage tenants.");
}
gadgets.window.adjustHeight();
}
Modified:
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/js/util.js
==============================================================================
---
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/js/util.js
(original)
+++
sandbox/ivol/amdatu-gadget-container/tenant-management-gadget/src/main/resources/static/js/util.js
Tue Nov 22 16:27:22 2011
@@ -60,4 +60,25 @@
function getBaseUrl() {
return window.location.protocol +"//" + window.location.hostname + ":" +
window.location.port;
+}
+
+function getDefaultParams(contentType, method) {
+ var params = {};
+ params[gadgets.io.RequestParameters.CONTENT_TYPE] = contentType;
+ params[gadgets.io.RequestParameters.METHOD] = method;
+ addAmdatuToken(params);
+ return params;
+}
+
+// Each invocation of gadgets.io.makeRequest is procies via the OpenSocial
container
+// to the REST service. For security reasons, it does not pass cookies to this
REST
+// service and so, since our REST service verifies authorization against
UserAdmin,
+// the REST service will deny all calls. The site authentication token needs
thus
+// to be passed from the OpenSocial container to the REST service, which is
what
+// happens here.
+function addAmdatuToken(params) {
+ var token = getCookie("amdatu_token");
+ if (token != null) {
+ params[gadgets.io.RequestParameters.HEADERS] = {"Authorization" : "Amdatu
" + token};
+ }
}
\ No newline at end of file
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits