Applied code cleanup

pull/477/head
Amanda Anganes 2013-07-12 16:58:41 -04:00
parent 3e23967b46
commit 15aea61fbe
160 changed files with 15273 additions and 9048 deletions

View File

@ -20,8 +20,6 @@ import java.math.BigInteger;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.text.ParseException; import java.text.ParseException;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -29,8 +27,6 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient;
import org.mitre.jwt.signer.service.JwtSigningAndValidationService; import org.mitre.jwt.signer.service.JwtSigningAndValidationService;
import org.mitre.jwt.signer.service.impl.JWKSetSigningAndValidationServiceCacheService; import org.mitre.jwt.signer.service.impl.JWKSetSigningAndValidationServiceCacheService;

View File

@ -4,11 +4,6 @@
package org.mitre.openid.connect.client.service.impl; package org.mitre.openid.connect.client.service.impl;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.security.NoSuchAlgorithmException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.http.client.utils.URIBuilder; import org.apache.http.client.utils.URIBuilder;
import org.mitre.jwt.signer.service.JwtSigningAndValidationService; import org.mitre.jwt.signer.service.JwtSigningAndValidationService;

View File

@ -1,10 +1,5 @@
package org.mitre.openid.connect.client; package org.mitre.openid.connect.client;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/** /**
* Unit test for OIDCAuthenticationFilter * Unit test for OIDCAuthenticationFilter

View File

@ -5,7 +5,6 @@ package org.mitre.jose;
import javax.persistence.Basic; import javax.persistence.Basic;
import javax.persistence.Embeddable; import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.Transient; import javax.persistence.Transient;
import com.google.common.base.Strings; import com.google.common.base.Strings;

View File

@ -9,7 +9,6 @@ import javax.persistence.Transient;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.nimbusds.jose.EncryptionMethod; import com.nimbusds.jose.EncryptionMethod;
import com.nimbusds.jose.JWEAlgorithm;
/** /**
* @author jricher * @author jricher

View File

@ -5,8 +5,6 @@ package org.mitre.jose;
import javax.persistence.Basic; import javax.persistence.Basic;
import javax.persistence.Embeddable; import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient; import javax.persistence.Transient;
import com.google.common.base.Strings; import com.google.common.base.Strings;

View File

@ -16,7 +16,6 @@
package org.mitre.jwt.signer.service; package org.mitre.jwt.signer.service;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.util.Map; import java.util.Map;
import com.nimbusds.jose.JWSAlgorithm; import com.nimbusds.jose.JWSAlgorithm;

View File

@ -3,12 +3,6 @@
*/ */
package org.mitre.jwt.signer.service.impl; package org.mitre.jwt.signer.service.impl;
import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.RSAPublicKeySpec;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import org.apache.http.client.HttpClient; import org.apache.http.client.HttpClient;
@ -22,12 +16,7 @@ import org.springframework.web.client.RestTemplate;
import com.google.common.cache.Cache; import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader; import com.google.common.cache.CacheLoader;
import com.nimbusds.jose.JWSVerifier;
import com.nimbusds.jose.crypto.RSASSAVerifier;
import com.nimbusds.jose.jwk.JWK;
import com.nimbusds.jose.jwk.JWKSet; import com.nimbusds.jose.jwk.JWKSet;
import com.nimbusds.jose.jwk.KeyType;
import com.nimbusds.jose.jwk.RSAKey;
/** /**
* *

View File

@ -416,6 +416,7 @@ public class ClientDetailsEntity implements ClientDetails {
/** /**
* passthrough for SECOAUTH api * passthrough for SECOAUTH api
*/ */
@Override
public Set<String> getAuthorizedGrantTypes() { public Set<String> getAuthorizedGrantTypes() {
return getGrantTypes(); return getGrantTypes();
} }
@ -501,6 +502,7 @@ public class ClientDetailsEntity implements ClientDetails {
/** /**
* @return the resourceIds * @return the resourceIds
*/ */
@Override
@ElementCollection(fetch = FetchType.EAGER) @ElementCollection(fetch = FetchType.EAGER)
@CollectionTable( @CollectionTable(
name="client_resource", name="client_resource",

View File

@ -116,6 +116,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
/** /**
* Get all additional information to be sent to the serializer. Inserts a copy of the IdToken (in JWT String form). * Get all additional information to be sent to the serializer. Inserts a copy of the IdToken (in JWT String form).
*/ */
@Override
@Transient @Transient
public Map<String, Object> getAdditionalInformation() { public Map<String, Object> getAdditionalInformation() {
Map<String, Object> map = new HashMap<String, Object>(); //super.getAdditionalInformation(); Map<String, Object> map = new HashMap<String, Object>(); //super.getAdditionalInformation();
@ -161,6 +162,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
/** /**
* Get the string-encoded value of this access token. * Get the string-encoded value of this access token.
*/ */
@Override
@Basic @Basic
@Column(name="token_value") @Column(name="token_value")
public String getValue() { public String getValue() {
@ -177,6 +179,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
setJwt(JWTParser.parse(value)); setJwt(JWTParser.parse(value));
} }
@Override
@Basic @Basic
@Temporal(javax.persistence.TemporalType.TIMESTAMP) @Temporal(javax.persistence.TemporalType.TIMESTAMP)
public Date getExpiration() { public Date getExpiration() {
@ -187,6 +190,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
this.expiration = expiration; this.expiration = expiration;
} }
@Override
@Basic @Basic
@Column(name="token_type") @Column(name="token_type")
public String getTokenType() { public String getTokenType() {
@ -197,6 +201,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
this.tokenType = tokenType; this.tokenType = tokenType;
} }
@Override
@ManyToOne @ManyToOne
@JoinColumn(name="refresh_token_id") @JoinColumn(name="refresh_token_id")
public OAuth2RefreshTokenEntity getRefreshToken() { public OAuth2RefreshTokenEntity getRefreshToken() {
@ -216,6 +221,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
setRefreshToken((OAuth2RefreshTokenEntity)refreshToken); setRefreshToken((OAuth2RefreshTokenEntity)refreshToken);
} }
@Override
@ElementCollection(fetch=FetchType.EAGER) @ElementCollection(fetch=FetchType.EAGER)
@CollectionTable( @CollectionTable(
joinColumns=@JoinColumn(name="owner_id"), joinColumns=@JoinColumn(name="owner_id"),
@ -229,6 +235,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
this.scope = scope; this.scope = scope;
} }
@Override
@Transient @Transient
public boolean isExpired() { public boolean isExpired() {
return getExpiration() == null ? false : System.currentTimeMillis() > getExpiration().getTime(); return getExpiration() == null ? false : System.currentTimeMillis() > getExpiration().getTime();

View File

@ -39,9 +39,7 @@ import javax.persistence.Transient;
import org.springframework.security.oauth2.common.OAuth2RefreshToken; import org.springframework.security.oauth2.common.OAuth2RefreshToken;
import com.nimbusds.jwt.JWT; import com.nimbusds.jwt.JWT;
import com.nimbusds.jwt.JWTClaimsSet;
import com.nimbusds.jwt.JWTParser; import com.nimbusds.jwt.JWTParser;
import com.nimbusds.jwt.PlainJWT;
/** /**
* @author jricher * @author jricher
@ -114,6 +112,7 @@ public class OAuth2RefreshTokenEntity implements OAuth2RefreshToken {
/** /**
* Get the JWT-encoded value of this token * Get the JWT-encoded value of this token
*/ */
@Override
@Basic @Basic
@Column(name="token_value") @Column(name="token_value")
public String getValue() { public String getValue() {

View File

@ -27,6 +27,7 @@ public interface ClientDetailsEntityService extends ClientDetailsService {
public ClientDetailsEntity getClientById(Long id); public ClientDetailsEntity getClientById(Long id);
@Override
public ClientDetailsEntity loadClientByClientId(String clientId) throws OAuth2Exception; public ClientDetailsEntity loadClientByClientId(String clientId) throws OAuth2Exception;
public void deleteClient(ClientDetailsEntity client); public void deleteClient(ClientDetailsEntity client);

View File

@ -26,6 +26,7 @@ import org.springframework.security.oauth2.provider.token.ResourceServerTokenSer
public interface OAuth2TokenEntityService extends AuthorizationServerTokenServices, ResourceServerTokenServices { public interface OAuth2TokenEntityService extends AuthorizationServerTokenServices, ResourceServerTokenServices {
@Override
public OAuth2AccessTokenEntity readAccessToken(String accessTokenValue); public OAuth2AccessTokenEntity readAccessToken(String accessTokenValue);
public OAuth2RefreshTokenEntity getRefreshToken(String refreshTokenValue); public OAuth2RefreshTokenEntity getRefreshToken(String refreshTokenValue);
@ -44,6 +45,7 @@ public interface OAuth2TokenEntityService extends AuthorizationServerTokenServic
public OAuth2RefreshTokenEntity saveRefreshToken(OAuth2RefreshTokenEntity refreshToken); public OAuth2RefreshTokenEntity saveRefreshToken(OAuth2RefreshTokenEntity refreshToken);
@Override
public OAuth2AccessTokenEntity getAccessToken(OAuth2Authentication authentication); public OAuth2AccessTokenEntity getAccessToken(OAuth2Authentication authentication);
public OAuth2AccessTokenEntity getAccessTokenById(Long id); public OAuth2AccessTokenEntity getAccessTokenById(Long id);

View File

@ -17,7 +17,6 @@ package org.mitre.oauth2.service.impl;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException; import org.springframework.dao.DataAccessException;

View File

@ -358,6 +358,7 @@ public class DefaultUserInfo implements UserInfo {
/** /**
* @return the birthdate * @return the birthdate
*/ */
@Override
@Basic @Basic
@Column(name="birthdate") @Column(name="birthdate")
public String getBirthdate() { public String getBirthdate() {
@ -366,6 +367,7 @@ public class DefaultUserInfo implements UserInfo {
/** /**
* @param birthdate the birthdate to set * @param birthdate the birthdate to set
*/ */
@Override
public void setBirthdate(String birthdate) { public void setBirthdate(String birthdate) {
this.birthdate = birthdate; this.birthdate = birthdate;
} }

View File

@ -1,6 +1,7 @@
package org.mitre.openid.connect.repository; package org.mitre.openid.connect.repository;
import java.util.Collection; import java.util.Collection;
import org.mitre.openid.connect.model.Nonce; import org.mitre.openid.connect.model.Nonce;
/** /**

View File

@ -46,6 +46,7 @@ public class JpaOAuth2ClientRepository implements OAuth2ClientRepository {
this.manager = manager; this.manager = manager;
} }
@Override
public ClientDetailsEntity getById(Long id) { public ClientDetailsEntity getById(Long id) {
return manager.find(ClientDetailsEntity.class, id); return manager.find(ClientDetailsEntity.class, id);
} }

View File

@ -3,6 +3,9 @@
*/ */
package org.mitre.oauth2.repository.impl; package org.mitre.oauth2.repository.impl;
import static org.mitre.util.jpa.JpaUtil.getSingleResult;
import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
@ -15,9 +18,6 @@ import org.mitre.oauth2.repository.SystemScopeRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import static org.mitre.util.jpa.JpaUtil.getSingleResult;
import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
/** /**
* @author jricher * @author jricher
* *

View File

@ -101,6 +101,7 @@ public class DefaultOAuth2ClientDetailsEntityService implements ClientDetailsEnt
/** /**
* Get the client by its internal ID * Get the client by its internal ID
*/ */
@Override
public ClientDetailsEntity getClientById(Long id) { public ClientDetailsEntity getClientById(Long id) {
ClientDetailsEntity client = clientRepository.getById(id); ClientDetailsEntity client = clientRepository.getById(id);

View File

@ -84,6 +84,7 @@ public class TokenIntrospectionView extends AbstractView {
}) })
.registerTypeAdapter(OAuth2AccessTokenEntity.class, new JsonSerializer<OAuth2AccessTokenEntity>() { .registerTypeAdapter(OAuth2AccessTokenEntity.class, new JsonSerializer<OAuth2AccessTokenEntity>() {
@Override
public JsonElement serialize(OAuth2AccessTokenEntity src, Type typeOfSrc, JsonSerializationContext context) { public JsonElement serialize(OAuth2AccessTokenEntity src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject token = new JsonObject(); JsonObject token = new JsonObject();

View File

@ -5,9 +5,6 @@ package org.mitre.oauth2.web;
import java.util.Set; import java.util.Set;
import javax.persistence.EntityExistsException;
import javax.persistence.TransactionRequiredException;
import org.mitre.oauth2.model.SystemScope; import org.mitre.oauth2.model.SystemScope;
import org.mitre.oauth2.service.SystemScopeService; import org.mitre.oauth2.service.SystemScopeService;
import org.slf4j.Logger; import org.slf4j.Logger;

View File

@ -25,7 +25,6 @@ import javax.persistence.TypedQuery;
import org.mitre.openid.connect.model.ApprovedSite; import org.mitre.openid.connect.model.ApprovedSite;
import org.mitre.openid.connect.repository.ApprovedSiteRepository; import org.mitre.openid.connect.repository.ApprovedSiteRepository;
import org.mitre.util.jpa.JpaUtil;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

View File

@ -8,7 +8,6 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import org.mitre.openid.connect.model.ApprovedSite;
import org.mitre.openid.connect.model.Nonce; import org.mitre.openid.connect.model.Nonce;
import org.mitre.openid.connect.repository.NonceRepository; import org.mitre.openid.connect.repository.NonceRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;

View File

@ -15,8 +15,8 @@
******************************************************************************/ ******************************************************************************/
package org.mitre.openid.connect.repository.impl; package org.mitre.openid.connect.repository.impl;
import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
import static org.mitre.util.jpa.JpaUtil.getSingleResult; import static org.mitre.util.jpa.JpaUtil.getSingleResult;
import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
import java.util.Collection; import java.util.Collection;

View File

@ -29,6 +29,7 @@ public class DefaultNonceService implements NonceService, InitializingBean {
/** /**
* Make sure that the nonce storage duration was set * Make sure that the nonce storage duration was set
*/ */
@Override
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() throws Exception {
if (nonceStorageDuration == null) { if (nonceStorageDuration == null) {
logger.error("Nonce storage duration must be set!"); logger.error("Nonce storage duration must be set!");

View File

@ -17,11 +17,9 @@ import org.mitre.jose.JWSAlgorithmEmbed;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.web.servlet.view.AbstractView; import org.springframework.web.servlet.view.AbstractView;
import com.google.gson.ExclusionStrategy; import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
@ -85,6 +83,7 @@ public abstract class AbstractClientEntityView extends AbstractView {
protected abstract ExclusionStrategy getExclusionStrategy(); protected abstract ExclusionStrategy getExclusionStrategy();
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) { protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
response.setContentType("application/json"); response.setContentType("application/json");

View File

@ -3,34 +3,14 @@
*/ */
package org.mitre.openid.connect.view; package org.mitre.openid.connect.view;
import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.mitre.jose.JWEAlgorithmEmbed;
import org.mitre.jose.JWEEncryptionMethodEmbed;
import org.mitre.jose.JWSAlgorithmEmbed;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.web.servlet.view.AbstractView;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.gson.ExclusionStrategy; import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes; import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
/** /**
* *
@ -48,9 +28,11 @@ public class ClientEntityViewForAdmins extends AbstractClientEntityView {
/** /**
* @return * @return
*/ */
@Override
protected ExclusionStrategy getExclusionStrategy() { protected ExclusionStrategy getExclusionStrategy() {
return new ExclusionStrategy() { return new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) { public boolean shouldSkipField(FieldAttributes f) {
if (blacklistedFields.contains(f.getName())) { if (blacklistedFields.contains(f.getName())) {
return true; return true;
@ -59,6 +41,7 @@ public class ClientEntityViewForAdmins extends AbstractClientEntityView {
} }
} }
@Override
public boolean shouldSkipClass(Class<?> clazz) { public boolean shouldSkipClass(Class<?> clazz) {
// skip the JPA binding wrapper // skip the JPA binding wrapper
if (clazz.equals(BeanPropertyBindingResult.class)) { if (clazz.equals(BeanPropertyBindingResult.class)) {

View File

@ -3,34 +3,14 @@
*/ */
package org.mitre.openid.connect.view; package org.mitre.openid.connect.view;
import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.mitre.jose.JWEAlgorithmEmbed;
import org.mitre.jose.JWEEncryptionMethodEmbed;
import org.mitre.jose.JWSAlgorithmEmbed;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.web.servlet.view.AbstractView;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.gson.ExclusionStrategy; import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes; import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
/** /**
* *
@ -53,6 +33,7 @@ public class ClientEntityViewForUsers extends AbstractClientEntityView {
protected ExclusionStrategy getExclusionStrategy() { protected ExclusionStrategy getExclusionStrategy() {
return new ExclusionStrategy() { return new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) { public boolean shouldSkipField(FieldAttributes f) {
// whitelist the handful of fields that are good // whitelist the handful of fields that are good
if (whitelistedFields.contains(f.getName())) { if (whitelistedFields.contains(f.getName())) {
@ -62,6 +43,7 @@ public class ClientEntityViewForUsers extends AbstractClientEntityView {
} }
} }
@Override
public boolean shouldSkipClass(Class<?> clazz) { public boolean shouldSkipClass(Class<?> clazz) {
// skip the JPA binding wrapper // skip the JPA binding wrapper
if (clazz.equals(BeanPropertyBindingResult.class)) { if (clazz.equals(BeanPropertyBindingResult.class)) {

View File

@ -55,6 +55,7 @@ public class JSONUserInfoView extends AbstractView {
/* (non-Javadoc) /* (non-Javadoc)
* @see org.springframework.web.servlet.view.AbstractView#renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) * @see org.springframework.web.servlet.view.AbstractView#renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/ */
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) { protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
UserInfo userInfo = (UserInfo) model.get("userInfo"); UserInfo userInfo = (UserInfo) model.get("userInfo");
@ -64,11 +65,13 @@ public class JSONUserInfoView extends AbstractView {
Gson gson = new GsonBuilder() Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() { .setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) { public boolean shouldSkipField(FieldAttributes f) {
return false; return false;
} }
@Override
public boolean shouldSkipClass(Class<?> clazz) { public boolean shouldSkipClass(Class<?> clazz) {
// skip the JPA binding wrapper // skip the JPA binding wrapper
if (clazz.equals(BeanPropertyBindingResult.class)) { if (clazz.equals(BeanPropertyBindingResult.class)) {

View File

@ -40,11 +40,13 @@ public class JsonApprovedSiteView extends AbstractView {
private Gson gson = new GsonBuilder() private Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() { .setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) { public boolean shouldSkipField(FieldAttributes f) {
return false; return false;
} }
@Override
public boolean shouldSkipClass(Class<?> clazz) { public boolean shouldSkipClass(Class<?> clazz) {
// skip the JPA binding wrapper // skip the JPA binding wrapper
if (clazz.equals(BeanPropertyBindingResult.class)) { if (clazz.equals(BeanPropertyBindingResult.class)) {
@ -67,6 +69,7 @@ public class JsonApprovedSiteView extends AbstractView {
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create(); .create();
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) { protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
response.setContentType("application/json"); response.setContentType("application/json");

View File

@ -34,11 +34,13 @@ public class JsonEntityView extends AbstractView {
private Gson gson = new GsonBuilder() private Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() { .setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) { public boolean shouldSkipField(FieldAttributes f) {
return false; return false;
} }
@Override
public boolean shouldSkipClass(Class<?> clazz) { public boolean shouldSkipClass(Class<?> clazz) {
// skip the JPA binding wrapper // skip the JPA binding wrapper
if (clazz.equals(BeanPropertyBindingResult.class)) { if (clazz.equals(BeanPropertyBindingResult.class)) {
@ -52,6 +54,7 @@ public class JsonEntityView extends AbstractView {
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create(); .create();
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) { protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
response.setContentType("application/json"); response.setContentType("application/json");

View File

@ -32,11 +32,13 @@ public class JsonErrorView extends AbstractView {
private Gson gson = new GsonBuilder() private Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() { .setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) { public boolean shouldSkipField(FieldAttributes f) {
return false; return false;
} }
@Override
public boolean shouldSkipClass(Class<?> clazz) { public boolean shouldSkipClass(Class<?> clazz) {
// skip the JPA binding wrapper // skip the JPA binding wrapper
if (clazz.equals(BeanPropertyBindingResult.class)) { if (clazz.equals(BeanPropertyBindingResult.class)) {
@ -50,6 +52,7 @@ public class JsonErrorView extends AbstractView {
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create(); .create();
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) { protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
response.setContentType("application/json"); response.setContentType("application/json");

View File

@ -45,6 +45,7 @@ public class POCOUserInfoView extends AbstractView {
/* (non-Javadoc) /* (non-Javadoc)
* @see org.springframework.web.servlet.view.AbstractView#renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) * @see org.springframework.web.servlet.view.AbstractView#renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/ */
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) { protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
UserInfo userInfo = (UserInfo) model.get("userInfo"); UserInfo userInfo = (UserInfo) model.get("userInfo");
@ -54,11 +55,13 @@ public class POCOUserInfoView extends AbstractView {
Gson gson = new GsonBuilder() Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() { .setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) { public boolean shouldSkipField(FieldAttributes f) {
return false; return false;
} }
@Override
public boolean shouldSkipClass(Class<?> clazz) { public boolean shouldSkipClass(Class<?> clazz) {
// skip the JPA binding wrapper // skip the JPA binding wrapper
if (clazz.equals(BeanPropertyBindingResult.class)) { if (clazz.equals(BeanPropertyBindingResult.class)) {

View File

@ -31,11 +31,13 @@ public class StatsSummary extends AbstractView {
Gson gson = new GsonBuilder() Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() { .setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) { public boolean shouldSkipField(FieldAttributes f) {
return false; return false;
} }
@Override
public boolean shouldSkipClass(Class<?> clazz) { public boolean shouldSkipClass(Class<?> clazz) {
// skip the JPA binding wrapper // skip the JPA binding wrapper
if (clazz.equals(BeanPropertyBindingResult.class)) { if (clazz.equals(BeanPropertyBindingResult.class)) {

View File

@ -17,7 +17,6 @@ package org.mitre.openid.connect.web;
import java.util.Map; import java.util.Map;
import org.mitre.openid.connect.config.ConfigurationPropertiesBean;
import org.mitre.openid.connect.service.StatsService; import org.mitre.openid.connect.service.StatsService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;

View File

@ -9,7 +9,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.mitre.openid.connect.model.UserInfo; import org.mitre.openid.connect.model.UserInfo;
import org.mitre.openid.connect.repository.UserInfoRepository;
import org.mitre.openid.connect.service.UserInfoService; import org.mitre.openid.connect.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;

View File

@ -1,8 +1,9 @@
<h2>About</h2> <h2>About</h2>
<p>This OpenID Connect service is built from the MITREid Connect
Open Source project started by The MITRE Corporation.</p>
<p> <p>
This OpenID Connect service is built from the MITREid Connect Open Source project started by The MITRE Corporation. More information about the project can be found on our GitHub page: <a
</p> href="http://github.com/mitreid-connect/">MTIREid Connect on
<p> GitHub</a> There, you can submit bug reports, give feedback, or even
More information about the project can be found on our GitHub page: <a href="http://github.com/mitreid-connect/">MTIREid Connect on GitHub</a> contribute code patches for additional features you'd like to see.
There, you can submit bug reports, give feedback, or even contribute code patches for additional features you'd like to see.
</p> </p>

View File

@ -1,5 +1,6 @@
<%@ tag language="java" pageEncoding="UTF-8"%> <%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> <%@ taglib prefix="security"
uri="http://www.springframework.org/security/tags"%>
<security:authorize access="hasRole('ROLE_ADMIN')"> <security:authorize access="hasRole('ROLE_ADMIN')">
<li class="nav-header">Administrative</li> <li class="nav-header">Administrative</li>
<li><a href="manage/#admin/clients">Manage Clients</a></li> <li><a href="manage/#admin/clients">Manage Clients</a></li>

View File

@ -1,6 +1,9 @@
<h2>Contact</h2> <h2>Contact</h2>
<p> <p>
For general assistance, email Bob at <a href="mailto:email@address.com?Subject=OIDC%20Server%20Assistance">email@address.com</a>. For general assistance, email Bob at <a
To offer feedback, email Sue at <a href="mailto:email@address.com?Subject=OIDC%20Server%20Feedback">email@address.com</a>. href="mailto:email@address.com?Subject=OIDC%20Server%20Assistance">email@address.com</a>.
To report a system failure or bug report, email Joe at <a href="mailto:email@address.com?Subject=OIDC%20Server%20Failure">email@address.com</a>. To offer feedback, email Sue at <a
href="mailto:email@address.com?Subject=OIDC%20Server%20Feedback">email@address.com</a>.
To report a system failure or bug report, email Joe at <a
href="mailto:email@address.com?Subject=OIDC%20Server%20Failure">email@address.com</a>.
</p> </p>

View File

@ -1 +1,3 @@
Powered by <a href="https://github.com/mitreid-connect/">MITREid Connect</a> &copy; 2013 The MITRE Corporation. Powered by
<a href="https://github.com/mitreid-connect/">MITREid Connect</a>
&copy; 2013 The MITRE Corporation.

View File

@ -3,20 +3,25 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
<div id="push"></div> <div id="push"></div>
</div> <!-- end #wrap --> </div>
<!-- end #wrap -->
<div id="footer"> <div id="footer">
<div class="container"> <div class="container">
<p class="muted credit"><o:copyright /></p> <p class="muted credit">
<o:copyright />
</p>
</div> </div>
</div> </div>
<!-- Le javascript <!-- Le javascript
================================================== --> ================================================== -->
<!-- Placed at the end of the document so the pages load faster --> <!-- Placed at the end of the document so the pages load faster -->
<script type="text/javascript" src="resources/bootstrap2/js/bootstrap.js"></script> <script type="text/javascript"
src="resources/bootstrap2/js/bootstrap.js"></script>
<script type="text/javascript" src="resources/js/lib/underscore.js"></script> <script type="text/javascript" src="resources/js/lib/underscore.js"></script>
<script type="text/javascript" src="resources/js/lib/backbone.js"></script> <script type="text/javascript" src="resources/js/lib/backbone.js"></script>
<script type="text/javascript" src="resources/js/lib/purl.js"></script> <script type="text/javascript" src="resources/js/lib/purl.js"></script>
<script type="text/javascript" src="resources/js/lib/bootstrapx-clickover.js"></script> <script type="text/javascript"
src="resources/js/lib/bootstrapx-clickover.js"></script>
<c:if test="${js != null && js != ''}"> <c:if test="${js != null && js != ''}">
<script type="text/javascript" src="resources/js/client.js"></script> <script type="text/javascript" src="resources/js/client.js"></script>
<script type="text/javascript" src="resources/js/grant.js"></script> <script type="text/javascript" src="resources/js/grant.js"></script>

View File

@ -6,7 +6,8 @@
<head> <head>
<c:set var="url">${pageContext.request.requestURL}</c:set> <c:set var="url">${pageContext.request.requestURL}</c:set>
<base href="${fn:substring(url, 0, fn:length(url) - fn:length(pageContext.request.requestURI))}${pageContext.request.contextPath}/" /> <base
href="${fn:substring(url, 0, fn:length(url) - fn:length(pageContext.request.requestURI))}${pageContext.request.contextPath}/" />
<meta charset="utf-8"> <meta charset="utf-8">
<title>OpenID Connect - ${title}</title> <title>OpenID Connect - ${title}</title>
@ -17,9 +18,7 @@
<!-- Le styles --> <!-- Le styles -->
<link href="resources/bootstrap2/css/bootstrap.min.css" rel="stylesheet"> <link href="resources/bootstrap2/css/bootstrap.min.css" rel="stylesheet">
<style type="text/css"> <style type="text/css">
html,body {
html,
body {
height: 100%; height: 100%;
/* The html and body elements cannot have any padding or margin. */ /* The html and body elements cannot have any padding or margin. */
} }
@ -46,10 +45,10 @@
} }
/* Set the fixed height of the footer here */ /* Set the fixed height of the footer here */
#push, #push,#footer {
#footer {
min-height: 60px; min-height: 60px;
} }
#footer { #footer {
background-color: #f5f5f5; background-color: #f5f5f5;
} }
@ -67,16 +66,17 @@
} }
a.brand { a.brand {
background: url('${config.logoImageUrl}') no-repeat scroll 7px 7px transparent; background: url('${config.logoImageUrl}') no-repeat scroll 7px 7px
transparent;
} }
</style> </style>
<link href="resources/bootstrap2/css/bootstrap-responsive.css" rel="stylesheet"> <link href="resources/bootstrap2/css/bootstrap-responsive.css"
rel="stylesheet">
<style type="text/css"> <style type="text/css">
@media ( min-width : 768px) and (max-width: 979px) { @media ( min-width : 768px) and (max-width: 979px) {
.main { .main {
padding-top: 0px; padding-top: 0px;
} }
} }
@media ( max-width : 767px) { @media ( max-width : 767px) {
@ -87,8 +87,6 @@
padding-right: 20px; padding-right: 20px;
} }
} }
</style> </style>
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
@ -98,9 +96,12 @@
<!-- Le fav and touch icons --> <!-- Le fav and touch icons -->
<link rel="shortcut icon" href="../bootstrap2/ico/favicon.ico"> <link rel="shortcut icon" href="../bootstrap2/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="../bootstrap2/ico/apple-touch-icon-114-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114"
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="../bootstrap2/ico/apple-touch-icon-72-precomposed.png"> href="../bootstrap2/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="../bootstrap2/ico/apple-touch-icon-57-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72"
href="../bootstrap2/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed"
href="../bootstrap2/ico/apple-touch-icon-57-precomposed.png">
<!-- Load jQuery up here so that we can use in-page functions --> <!-- Load jQuery up here so that we can use in-page functions -->
<script type="text/javascript" src="resources/js/lib/jquery.js"></script> <script type="text/javascript" src="resources/js/lib/jquery.js"></script>
@ -113,7 +114,10 @@
<strong>Warning!</strong> <strong>Warning!</strong>
<div class="modal-body"></div> <div class="modal-body"></div>
</div> </div>
<div class="modal-footer"><button class="btn primary" type="button" onclick="$('#modalAlert').modal('hide');">OK</button></div> <div class="modal-footer">
<button class="btn primary" type="button"
onclick="$('#modalAlert').modal('hide');">OK</button>
</div>
</div> </div>
<div id="wrap"> <div id="wrap">

View File

@ -1,5 +1,9 @@
<h2>About</h2> <h2>About</h2>
<p>This OpenID Connect service is built from the MITREid Connect Open Source project started by The MITRE Corporation.</p> <p>This OpenID Connect service is built from the MITREid Connect
Open Source project started by The MITRE Corporation.</p>
<p><a class="btn" href="http://github.com/mitreid-connect/">More &raquo;</a></p> <p>
<a class="btn" href="http://github.com/mitreid-connect/">More
&raquo;</a>
</p>

View File

@ -1,5 +1,9 @@
<h2>Contact</h2> <h2>Contact</h2>
<p>For more information or support, contact the administrators of this system.</p> <p>For more information or support, contact the administrators of
this system.</p>
<p><a class="btn" href="mailto:idp@example.com?Subject=OpenID Connect">Email &raquo;</a></p> <p>
<a class="btn" href="mailto:idp@example.com?Subject=OpenID Connect">Email
&raquo;</a>
</p>

View File

@ -1,8 +1,10 @@
<h2>Current Statistics</h2> <h2>Current Statistics</h2>
<p>There have been <p>
<span class="label label-info">${statsSummary["userCount"]}</span> user${statsSummary["userCount"] == 1 ? "" : "s"} There have been <span class="label label-info">${statsSummary["userCount"]}</span>
of this system who have logged in to user${statsSummary["userCount"] == 1 ? "" : "s"} of this system who
<span class="label label-info">${statsSummary["clientCount"]}</span> total site${statsSummary["clientCount"] == 1 ? "" : "s"}, have logged in to <span class="label label-info">${statsSummary["clientCount"]}</span>
for a total of total site${statsSummary["clientCount"] == 1 ? "" : "s"}, for a total
<span class="label label-info">${statsSummary["approvalCount"]}</span> site approval${statsSummary["approvalCount"] == 1 ? "" : "s"}.</p> of <span class="label label-info">${statsSummary["approvalCount"]}</span>
site approval${statsSummary["approvalCount"] == 1 ? "" : "s"}.
</p>

View File

@ -1,8 +1,11 @@
<h1>Welcome!</h1> <h1>Welcome!</h1>
<p>OpenID Connect is a next-generation protocol built on top of the OAuth2 authorization framework. <p>OpenID Connect is a next-generation protocol built on top of the
OpenID Connect lets you log into a remote site using your identity without exposing your OAuth2 authorization framework. OpenID Connect lets you log into a
credentials, like a username and password. remote site using your identity without exposing your credentials, like
</p> a username and password.</p>
<p><a class="btn btn-primary btn-large" href="http://openid.net/connect/">Learn more &raquo;</a></p> <p>
<a class="btn btn-primary btn-large" href="http://openid.net/connect/">Learn
more &raquo;</a>
</p>

View File

@ -1,4 +1,5 @@
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> <%@ taglib prefix="security"
uri="http://www.springframework.org/security/tags"%>
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
<div class="span2 visible-desktop"> <div class="span2 visible-desktop">
@ -8,13 +9,18 @@
<ul class="nav nav-list"> <ul class="nav nav-list">
<o:actionmenu /> <o:actionmenu />
</ul> </ul>
</div><!--/.well --> </div>
<!--/.well -->
</security:authorize> </security:authorize>
<security:authorize access="!hasRole('ROLE_USER')"> <security:authorize access="!hasRole('ROLE_USER')">
<div class="well"> <div class="well">
<div>You are not logged in.</div> <div>You are not logged in.</div>
<hr /> <hr />
<div class="row-fluid"><a class="btn btn-primary span12" href="login"><i class="icon-user icon-white"></i> Log in</a></div> <div class="row-fluid">
<a class="btn btn-primary span12" href="login"><i
class="icon-user icon-white"></i> Log in</a>
</div>
</div> </div>
</security:authorize> </security:authorize>
</div><!--/span--> </div>
<!--/span-->

View File

@ -1,8 +1,10 @@
<h2>Current Statistics</h2> <h2>Current Statistics</h2>
<p>There have been <p>
<span class="label label-info">${statsSummary["userCount"]}</span> user${statsSummary["userCount"] == 1 ? "" : "s"} There have been <span class="label label-info">${statsSummary["userCount"]}</span>
of this system who have logged in to user${statsSummary["userCount"] == 1 ? "" : "s"} of this system who
<span class="label label-info">${statsSummary["clientCount"]}</span> total site${statsSummary["clientCount"] == 1 ? "" : "s"}, have logged in to <span class="label label-info">${statsSummary["clientCount"]}</span>
for a total of total site${statsSummary["clientCount"] == 1 ? "" : "s"}, for a total
<span class="label label-info">${statsSummary["approvalCount"]}</span> site approval${statsSummary["approvalCount"] == 1 ? "" : "s"}.</p> of <span class="label label-info">${statsSummary["approvalCount"]}</span>
site approval${statsSummary["approvalCount"] == 1 ? "" : "s"}.
</p>

View File

@ -1,6 +1,7 @@
<%@attribute name="pageName" required="false"%> <%@attribute name="pageName" required="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> <%@ taglib prefix="security"
uri="http://www.springframework.org/security/tags"%>
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
<c:choose> <c:choose>
<c:when test="${ not empty userInfo.preferredUsername }"> <c:when test="${ not empty userInfo.preferredUsername }">
@ -16,8 +17,10 @@
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<c:choose> <c:choose>
<c:when test="${ not empty userInfo.givenName || not empty userInfo.familyName }"> <c:when
<c:set var="longName" value="${ userInfo.givenName } {$ userInfo.familyName }" /> test="${ not empty userInfo.givenName || not empty userInfo.familyName }">
<c:set var="longName"
value="${ userInfo.givenName } {$ userInfo.familyName }" />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<c:set var="longName" value="${ shortName }" /> <c:set var="longName" value="${ shortName }" />
@ -28,10 +31,10 @@
<div class="navbar navbar-fixed-top"> <div class="navbar navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<button class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <button class="btn btn-navbar" data-toggle="collapse"
<span class="icon-bar"></span> data-target=".nav-collapse">
<span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span
<span class="icon-bar"></span> class="icon-bar"></span>
</button> </button>
<a class="brand" href="">${config.topbarTitle}</a> <a class="brand" href="">${config.topbarTitle}</a>
<div class="nav-collapse collapse"> <div class="nav-collapse collapse">
@ -72,12 +75,12 @@
<security:authorize access="hasRole('ROLE_USER')"> <security:authorize access="hasRole('ROLE_USER')">
<li class="dropdown hidden-desktop"> <li class="dropdown hidden-desktop"><a href="#"
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Action <b class="caret"></b></a> class="dropdown-toggle" data-toggle="dropdown">Action <b
class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<o:actionmenu /> <o:actionmenu />
</ul> </ul></li>
</li>
</security:authorize> </security:authorize>
@ -85,20 +88,26 @@
<ul class="nav pull-right"> <ul class="nav pull-right">
<security:authorize access="hasRole('ROLE_USER')"> <security:authorize access="hasRole('ROLE_USER')">
<div class="btn-group"> <div class="btn-group">
<a class="btn btn-primary btn-small dropdown-toggle" data-toggle="dropdown" href=""><i class="icon-user icon-white"></i> ${ shortName } <span class="caret"></span></a> <a class="btn btn-primary btn-small dropdown-toggle"
data-toggle="dropdown" href=""><i
class="icon-user icon-white"></i> ${ shortName } <span
class="caret"></span></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a>${ longName }</a></li> <li><a>${ longName }</a></li>
<li class="divider"></li> <li class="divider"></li>
<li><a href="logout"><i class="icon-remove"></i> Log out</a></li> <li><a href="logout"><i class="icon-remove"></i> Log
out</a></li>
</ul> </ul>
</div> </div>
</security:authorize> </security:authorize>
<security:authorize access="!hasRole('ROLE_USER')"> <security:authorize access="!hasRole('ROLE_USER')">
<a class="btn btn-primary btn-small" href="login"><i class="icon-user icon-white"></i> Log in</a> <a class="btn btn-primary btn-small" href="login"><i
class="icon-user icon-white"></i> Log in</a>
</security:authorize> </security:authorize>
</ul> </ul>
</div><!--/.nav-collapse --> </div>
<!--/.nav-collapse -->
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,6 +1,7 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> <%@ taglib prefix="security"
uri="http://www.springframework.org/security/tags"%>
<!-- TODO: highlight proper section of topbar; what is the right way to do this? --> <!-- TODO: highlight proper section of topbar; what is the right way to do this? -->

View File

@ -1,6 +1,7 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> <%@ taglib prefix="security"
uri="http://www.springframework.org/security/tags"%>
<!-- TODO: highlight proper section of topbar; what is the right way to do this? --> <!-- TODO: highlight proper section of topbar; what is the right way to do this? -->

View File

@ -1,6 +1,7 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> <%@ taglib prefix="security"
uri="http://www.springframework.org/security/tags"%>
<o:header title="welcome" /> <o:header title="welcome" />
<o:topbar /> <o:topbar />

View File

@ -1,4 +1,5 @@
<%@ taglib prefix="authz" uri="http://www.springframework.org/security/tags" %> <%@ taglib prefix="authz"
uri="http://www.springframework.org/security/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
<o:header title="Log In" /> <o:header title="Log In" />
@ -17,14 +18,28 @@ $(document).ready(function() {
<h1>Login with Username and Password</h1> <h1>Login with Username and Password</h1>
<c:if test="${ param.error != null }"> <c:if test="${ param.error != null }">
<div class="alert alert-error">The system was unable to log you in. Please try again.</div> <div class="alert alert-error">The system was unable to log you
in. Please try again.</div>
</c:if> </c:if>
<form action="<%=request.getContextPath()%>/j_spring_security_check" method="POST" class="well span3 offset1"> <form action="<%=request.getContextPath()%>/j_spring_security_check"
method="POST" class="well span3 offset1">
<fieldset> <fieldset>
<div class="input-prepend"><span class="add-on"><i class="icon-user"></i></span><input type="text" name="j_username" id="j_username" value="" spellcheck="false" autocomplete="off" autocapitalize="off" autocorrect="off" placeholder="Username"></div> <div class="input-prepend">
<div class="input-prepend"><span class="add-on"><i class="icon-lock"></i></span><input type="password" name="j_password" id="j_password" spellcheck="false" autocomplete="off" autocapitalize="off" autocorrect="off" placeholder="Password"></div> <span class="add-on"><i class="icon-user"></i></span><input
<div class="form-actions"><input type="submit" name="submit" value="Login" class="btn"></div> type="text" name="j_username" id="j_username" value=""
spellcheck="false" autocomplete="off" autocapitalize="off"
autocorrect="off" placeholder="Username">
</div>
<div class="input-prepend">
<span class="add-on"><i class="icon-lock"></i></span><input
type="password" name="j_password" id="j_password"
spellcheck="false" autocomplete="off" autocapitalize="off"
autocorrect="off" placeholder="Password">
</div>
<div class="form-actions">
<input type="submit" name="submit" value="Login" class="btn">
</div>
</fieldset> </fieldset>
</form> </form>

View File

@ -9,9 +9,7 @@
<div class="span10"> <div class="span10">
<div class="content span12"> <div class="content span12">
<o:breadcrumbs crumb="Manage Clients" /> <o:breadcrumbs crumb="Manage Clients" />
<span id="content"> <span id="content"> loading... </span>
loading...
</span>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,7 +1,11 @@
<%@ page import="org.springframework.security.core.AuthenticationException" %> <%@ page
<%@ page import="org.springframework.security.oauth2.common.exceptions.UnapprovedClientAuthenticationException" %> import="org.springframework.security.core.AuthenticationException"%>
<%@ page import="org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter" %> <%@ page
<%@ taglib prefix="authz" uri="http://www.springframework.org/security/tags" %> import="org.springframework.security.oauth2.common.exceptions.UnapprovedClientAuthenticationException"%>
<%@ page
import="org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter"%>
<%@ taglib prefix="authz"
uri="http://www.springframework.org/security/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
<o:header title="Approve Access" /> <o:header title="Approve Access" />
@ -11,9 +15,10 @@
<div class="alert-message error"> <div class="alert-message error">
<a href="#" class="close">&times;</a> <a href="#" class="close">&times;</a>
<p><strong>Access could not be granted.</strong> <p>
(<%= ((AuthenticationException) session.getAttribute(AbstractAuthenticationProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY)).getMessage() %> <strong>Access could not be granted.</strong> (<%= ((AuthenticationException) session.getAttribute(AbstractAuthenticationProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY)).getMessage() %>
)</p> )
</p>
</div> </div>
<% } %> <% } %>
<c:remove scope="session" var="SPRING_SECURITY_LAST_EXCEPTION" /> <c:remove scope="session" var="SPRING_SECURITY_LAST_EXCEPTION" />
@ -21,7 +26,8 @@
<div class="well" style="text-align: center"> <div class="well" style="text-align: center">
<h1>Approve New Site</h1> <h1>Approve New Site</h1>
<form name="confirmationForm" action="<%=request.getContextPath()%>/authorize" method="post"> <form name="confirmationForm"
action="<%=request.getContextPath()%>/authorize" method="post">
<div class="row"> <div class="row">
<div class="span4 offset2 well-small" style="text-align: left"> <div class="span4 offset2 well-small" style="text-align: left">
@ -29,42 +35,47 @@
<%-- TODO: wire up to stats engine and customize display of this block --%> <%-- TODO: wire up to stats engine and customize display of this block --%>
<c:if test="${ client.dynamicallyRegistered }"> <c:if test="${ client.dynamicallyRegistered }">
<div class="alert alert-block alert-info"> <div class="alert alert-block alert-info">
<h4><i class="icon-globe"></i> Caution:</h4> <h4>
This client was dynamically registered and has very few <i class="icon-globe"></i> Caution:
other users on this system. </h4>
This client was dynamically registered and has very few other
users on this system.
</div> </div>
</c:if> </c:if>
<c:if test="${ not empty client.logoUri }"> <c:if test="${ not empty client.logoUri }">
<ul class="thumbnails"> <ul class="thumbnails">
<li class="span4"> <li class="span4">
<div class="thumbnail"><img src="${client.logoUri }"/></div> <div class="thumbnail">
<img src="${client.logoUri }" />
</div>
</li> </li>
</ul> </ul>
</c:if> </c:if>
Do you authorize Do you authorize "
"<c:choose> <c:choose>
<c:when test="${empty client.clientName}"> <c:when test="${empty client.clientName}">
<c:out value="${client.clientId}" /> <c:out value="${client.clientId}" />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<c:out value="${client.clientName}" /> <c:out value="${client.clientName}" />
</c:otherwise> </c:otherwise>
</c:choose>" </c:choose>
to sign you into their site using your identity? " to sign you into their site using your identity?
<c:if test="${not empty client.clientDescription}"> <c:if test="${not empty client.clientDescription}">
<div> <div>
<a class="small" href="#" onclick="$('#description').toggle('fast'); return false;"><i class="icon-chevron-right"></i> more information</a> <a class="small" href="#"
onclick="$('#description').toggle('fast'); return false;"><i
class="icon-chevron-right"></i> more information</a>
</div> </div>
<p> <p>
<blockquote id="description" style="display: none"> <blockquote id="description" style="display: none">
${client.clientDescription} ${client.clientDescription}</blockquote>
</blockquote>
</p> </p>
</c:if> </c:if>
<div> <div>
<small> <small> <strong>Redirect URI: </strong>
<strong>Redirect URI: </strong><c:out value="${redirect_uri}"/> <c:out value="${redirect_uri}" />
</small> </small>
</div> </div>
</div> </div>
@ -74,12 +85,13 @@
<c:forEach var="scope" items="${ scopes }"> <c:forEach var="scope" items="${ scopes }">
<label for="scope_${ scope.value }" class="checkbox"> <label for="scope_${ scope.value }" class="checkbox"> <input
<input type="checkbox" name="scope_${ scope.value }" id="scope_${ scope.value }" value="${ scope.value }" checked="checked"> type="checkbox" name="scope_${ scope.value }"
<c:if test="${ not empty scope.icon }"> id="scope_${ scope.value }" value="${ scope.value }"
checked="checked"> <c:if
test="${ not empty scope.icon }">
<i class="icon-${ scope.icon }"></i> <i class="icon-${ scope.icon }"></i>
</c:if> </c:if> <c:choose>
<c:choose>
<c:when test="${ not empty scope.description }"> <c:when test="${ not empty scope.description }">
${ scope.description } ${ scope.description }
</c:when> </c:when>
@ -95,16 +107,15 @@
<fieldset style="text-align: left" class="well"> <fieldset style="text-align: left" class="well">
<legend style="margin-bottom: 0;">Remember this decision:</legend> <legend style="margin-bottom: 0;">Remember this decision:</legend>
<label for="remember-forever" class="radio"> <label for="remember-forever" class="radio"> <input
<input type="radio" name="remember" id="remember-forever" value="until-revoked" checked="checked"> type="radio" name="remember" id="remember-forever"
remember this decision until I revoke it value="until-revoked" checked="checked"> remember this
</label> decision until I revoke it
<label for="remember-hour" class="radio"> </label> <label for="remember-hour" class="radio"> <input
<input type="radio" name="remember" id="remember-hour" value="one-hour"> type="radio" name="remember" id="remember-hour" value="one-hour">
remember this decision for one hour remember this decision for one hour
</label> </label> <label for="remember-not" class="radio"> <input
<label for="remember-not" class="radio"> type="radio" name="remember" id="remember-not" value="none">
<input type="radio" name="remember" id="remember-not" value="none">
prompt me again next time prompt me again next time
</label> </label>
</fieldset> </fieldset>
@ -114,11 +125,13 @@
<div class="row"> <div class="row">
<input id="user_oauth_approval" name="user_oauth_approval" value="true" type="hidden"/> <input id="user_oauth_approval" name="user_oauth_approval"
<input name="authorize" value="Authorize" type="submit" value="true" type="hidden" /> <input name="authorize"
onclick="$('#user_oauth_approval').attr('value',true)" class="btn btn-success btn-large"/> value="Authorize" type="submit"
&nbsp; onclick="$('#user_oauth_approval').attr('value',true)"
<input name="deny" value="Deny" type="submit" onclick="$('#user_oauth_approval').attr('value',false)" class="btn btn-success btn-large" /> &nbsp; <input name="deny"
value="Deny" type="submit"
onclick="$('#user_oauth_approval').attr('value',false)"
class="btn btn-secondary btn-large" /> class="btn btn-secondary btn-large" />
</div> </div>

View File

@ -1,6 +1,7 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="o" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="o" tagdir="/WEB-INF/tags"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> <%@ taglib prefix="security"
uri="http://www.springframework.org/security/tags"%>
<!-- TODO: highlight proper section of topbar; what is the right way to do this? --> <!-- TODO: highlight proper section of topbar; what is the right way to do this? -->

View File

@ -3,7 +3,8 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets and Filters --> <!-- The definition of the Root Spring Container shared by all Servlets
and Filters -->
<context-param> <context-param>
<param-name>contextConfigLocation</param-name> <param-name>contextConfigLocation</param-name>
<param-value> <param-value>

View File

@ -7,8 +7,8 @@
* *
* Designed and built with all the love in the world @twitter by @mdo and @fat. * Designed and built with all the love in the world @twitter by @mdo and @fat.
*/ */
@
@-ms-viewport { -ms-viewport {
width: device-width; width: device-width;
} }
@ -16,8 +16,7 @@
*zoom: 1; *zoom: 1;
} }
.clearfix:before, .clearfix:before,.clearfix:after {
.clearfix:after {
display: table; display: table;
line-height: 0; line-height: 0;
content: ""; content: "";
@ -100,8 +99,7 @@
margin-left: -30px; margin-left: -30px;
*zoom: 1; *zoom: 1;
} }
.row:before, .row:before,.row:after {
.row:after {
display: table; display: table;
line-height: 0; line-height: 0;
content: ""; content: "";
@ -114,10 +112,8 @@
min-height: 1px; min-height: 1px;
margin-left: 30px; margin-left: 30px;
} }
.container, .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container
.navbar-static-top .container, {
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
width: 1170px; width: 1170px;
} }
.span12 { .span12 {
@ -196,8 +192,7 @@
width: 100%; width: 100%;
*zoom: 1; *zoom: 1;
} }
.row-fluid:before, .row-fluid:before,.row-fluid:after {
.row-fluid:after {
display: table; display: table;
line-height: 0; line-height: 0;
content: ""; content: "";
@ -366,72 +361,46 @@
margin-left: 8.547008547008547%; margin-left: 8.547008547008547%;
*margin-left: 8.440625568285142%; *margin-left: 8.440625568285142%;
} }
input, input,textarea,.uneditable-input {
textarea,
.uneditable-input {
margin-left: 0; margin-left: 0;
} }
.controls-row [class*="span"]+[class*="span"] { .controls-row [class*="span"]+[class*="span"] {
margin-left: 30px; margin-left: 30px;
} }
input.span12, input.span12,textarea.span12,.uneditable-input.span12 {
textarea.span12,
.uneditable-input.span12 {
width: 1156px; width: 1156px;
} }
input.span11, input.span11,textarea.span11,.uneditable-input.span11 {
textarea.span11,
.uneditable-input.span11 {
width: 1056px; width: 1056px;
} }
input.span10, input.span10,textarea.span10,.uneditable-input.span10 {
textarea.span10,
.uneditable-input.span10 {
width: 956px; width: 956px;
} }
input.span9, input.span9,textarea.span9,.uneditable-input.span9 {
textarea.span9,
.uneditable-input.span9 {
width: 856px; width: 856px;
} }
input.span8, input.span8,textarea.span8,.uneditable-input.span8 {
textarea.span8,
.uneditable-input.span8 {
width: 756px; width: 756px;
} }
input.span7, input.span7,textarea.span7,.uneditable-input.span7 {
textarea.span7,
.uneditable-input.span7 {
width: 656px; width: 656px;
} }
input.span6, input.span6,textarea.span6,.uneditable-input.span6 {
textarea.span6,
.uneditable-input.span6 {
width: 556px; width: 556px;
} }
input.span5, input.span5,textarea.span5,.uneditable-input.span5 {
textarea.span5,
.uneditable-input.span5 {
width: 456px; width: 456px;
} }
input.span4, input.span4,textarea.span4,.uneditable-input.span4 {
textarea.span4,
.uneditable-input.span4 {
width: 356px; width: 356px;
} }
input.span3, input.span3,textarea.span3,.uneditable-input.span3 {
textarea.span3,
.uneditable-input.span3 {
width: 256px; width: 256px;
} }
input.span2, input.span2,textarea.span2,.uneditable-input.span2 {
textarea.span2,
.uneditable-input.span2 {
width: 156px; width: 156px;
} }
input.span1, input.span1,textarea.span1,.uneditable-input.span1 {
textarea.span1,
.uneditable-input.span1 {
width: 56px; width: 56px;
} }
.thumbnails { .thumbnails {
@ -450,8 +419,7 @@
margin-left: -20px; margin-left: -20px;
*zoom: 1; *zoom: 1;
} }
.row:before, .row:before,.row:after {
.row:after {
display: table; display: table;
line-height: 0; line-height: 0;
content: ""; content: "";
@ -464,10 +432,8 @@
min-height: 1px; min-height: 1px;
margin-left: 20px; margin-left: 20px;
} }
.container, .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container
.navbar-static-top .container, {
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
width: 724px; width: 724px;
} }
.span12 { .span12 {
@ -546,8 +512,7 @@
width: 100%; width: 100%;
*zoom: 1; *zoom: 1;
} }
.row-fluid:before, .row-fluid:before,.row-fluid:after {
.row-fluid:after {
display: table; display: table;
line-height: 0; line-height: 0;
content: ""; content: "";
@ -716,72 +681,46 @@
margin-left: 8.56353591160221%; margin-left: 8.56353591160221%;
*margin-left: 8.457152932878806%; *margin-left: 8.457152932878806%;
} }
input, input,textarea,.uneditable-input {
textarea,
.uneditable-input {
margin-left: 0; margin-left: 0;
} }
.controls-row [class*="span"]+[class*="span"] { .controls-row [class*="span"]+[class*="span"] {
margin-left: 20px; margin-left: 20px;
} }
input.span12, input.span12,textarea.span12,.uneditable-input.span12 {
textarea.span12,
.uneditable-input.span12 {
width: 710px; width: 710px;
} }
input.span11, input.span11,textarea.span11,.uneditable-input.span11 {
textarea.span11,
.uneditable-input.span11 {
width: 648px; width: 648px;
} }
input.span10, input.span10,textarea.span10,.uneditable-input.span10 {
textarea.span10,
.uneditable-input.span10 {
width: 586px; width: 586px;
} }
input.span9, input.span9,textarea.span9,.uneditable-input.span9 {
textarea.span9,
.uneditable-input.span9 {
width: 524px; width: 524px;
} }
input.span8, input.span8,textarea.span8,.uneditable-input.span8 {
textarea.span8,
.uneditable-input.span8 {
width: 462px; width: 462px;
} }
input.span7, input.span7,textarea.span7,.uneditable-input.span7 {
textarea.span7,
.uneditable-input.span7 {
width: 400px; width: 400px;
} }
input.span6, input.span6,textarea.span6,.uneditable-input.span6 {
textarea.span6,
.uneditable-input.span6 {
width: 338px; width: 338px;
} }
input.span5, input.span5,textarea.span5,.uneditable-input.span5 {
textarea.span5,
.uneditable-input.span5 {
width: 276px; width: 276px;
} }
input.span4, input.span4,textarea.span4,.uneditable-input.span4 {
textarea.span4,
.uneditable-input.span4 {
width: 214px; width: 214px;
} }
input.span3, input.span3,textarea.span3,.uneditable-input.span3 {
textarea.span3,
.uneditable-input.span3 {
width: 152px; width: 152px;
} }
input.span2, input.span2,textarea.span2,.uneditable-input.span2 {
textarea.span2,
.uneditable-input.span2 {
width: 90px; width: 90px;
} }
input.span1, input.span1,textarea.span1,.uneditable-input.span1 {
textarea.span1,
.uneditable-input.span1 {
width: 28px; width: 28px;
} }
} }
@ -791,9 +730,7 @@
padding-right: 20px; padding-right: 20px;
padding-left: 20px; padding-left: 20px;
} }
.navbar-fixed-top, .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top {
.navbar-fixed-bottom,
.navbar-static-top {
margin-right: -20px; margin-right: -20px;
margin-left: -20px; margin-left: -20px;
} }
@ -815,17 +752,15 @@
.row-fluid { .row-fluid {
width: 100%; width: 100%;
} }
.row, .row,.thumbnails {
.thumbnails {
margin-left: 0; margin-left: 0;
} }
.thumbnails>li { .thumbnails>li {
float: none; float: none;
margin-left: 0; margin-left: 0;
} }
[class*="span"], [class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]
.uneditable-input[class*="span"], {
.row-fluid [class*="span"] {
display: block; display: block;
float: none; float: none;
width: 100%; width: 100%;
@ -834,8 +769,7 @@
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }
.span12, .span12,.row-fluid .span12 {
.row-fluid .span12 {
width: 100%; width: 100%;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
@ -844,13 +778,8 @@
.row-fluid [class*="offset"]:first-child { .row-fluid [class*="offset"]:first-child {
margin-left: 0; margin-left: 0;
} }
.input-large, .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input
.input-xlarge, {
.input-xxlarge,
input[class*="span"],
select[class*="span"],
textarea[class*="span"],
.uneditable-input {
display: block; display: block;
width: 100%; width: 100%;
min-height: 30px; min-height: 30px;
@ -858,10 +787,8 @@
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }
.input-prepend input, .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]
.input-append input, {
.input-prepend input[class*="span"],
.input-append input[class*="span"] {
display: inline-block; display: inline-block;
width: auto; width: auto;
} }
@ -892,8 +819,7 @@
display: block; display: block;
line-height: 20px; line-height: 20px;
} }
input[type="checkbox"], input[type="checkbox"],input[type="radio"] {
input[type="radio"] {
border: 1px solid #ccc; border: 1px solid #ccc;
} }
.form-horizontal .control-label { .form-horizontal .control-label {
@ -912,8 +838,7 @@
padding-right: 10px; padding-right: 10px;
padding-left: 10px; padding-left: 10px;
} }
.media .pull-left, .media .pull-left,.media .pull-right {
.media .pull-right {
display: block; display: block;
float: none; float: none;
margin-bottom: 10px; margin-bottom: 10px;
@ -940,8 +865,7 @@
body { body {
padding-top: 0; padding-top: 0;
} }
.navbar-fixed-top, .navbar-fixed-top,.navbar-fixed-bottom {
.navbar-fixed-bottom {
position: static; position: static;
} }
.navbar-fixed-top { .navbar-fixed-top {
@ -950,8 +874,7 @@
.navbar-fixed-bottom { .navbar-fixed-bottom {
margin-top: 20px; margin-top: 20px;
} }
.navbar-fixed-top .navbar-inner, .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner {
.navbar-fixed-bottom .navbar-inner {
padding: 5px; padding: 5px;
} }
.navbar .container { .navbar .container {
@ -983,8 +906,7 @@
color: #777777; color: #777777;
text-shadow: none; text-shadow: none;
} }
.nav-collapse .nav > li > a, .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a {
.nav-collapse .dropdown-menu a {
padding: 9px 15px; padding: 9px 15px;
font-weight: bold; font-weight: bold;
color: #777777; color: #777777;
@ -1002,16 +924,15 @@
.nav-collapse .dropdown-menu li+li a { .nav-collapse .dropdown-menu li+li a {
margin-bottom: 2px; margin-bottom: 2px;
} }
.nav-collapse .nav > li > a:hover, .nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover {
.nav-collapse .dropdown-menu a:hover {
background-color: #f2f2f2; background-color: #f2f2f2;
} }
.navbar-inverse .nav-collapse .nav > li > a, .navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a
.navbar-inverse .nav-collapse .dropdown-menu a { {
color: #999999; color: #999999;
} }
.navbar-inverse .nav-collapse .nav > li > a:hover, .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover
.navbar-inverse .nav-collapse .dropdown-menu a:hover { {
background-color: #111111; background-color: #111111;
} }
.nav-collapse.in .btn-group { .nav-collapse.in .btn-group {
@ -1039,30 +960,31 @@
.nav-collapse .open>.dropdown-menu { .nav-collapse .open>.dropdown-menu {
display: block; display: block;
} }
.nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after {
.nav-collapse .dropdown-menu:after {
display: none; display: none;
} }
.nav-collapse .dropdown-menu .divider { .nav-collapse .dropdown-menu .divider {
display: none; display: none;
} }
.nav-collapse .nav > li > .dropdown-menu:before, .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after
.nav-collapse .nav > li > .dropdown-menu:after { {
display: none; display: none;
} }
.nav-collapse .navbar-form, .nav-collapse .navbar-form,.nav-collapse .navbar-search {
.nav-collapse .navbar-search {
float: none; float: none;
padding: 10px 15px; padding: 10px 15px;
margin: 10px 0; margin: 10px 0;
border-top: 1px solid #f2f2f2; border-top: 1px solid #f2f2f2;
border-bottom: 1px solid #f2f2f2; border-bottom: 1px solid #f2f2f2;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0
rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0
rgba(255, 255, 255, 0.1);
} }
.navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search
.navbar-inverse .nav-collapse .navbar-search { {
border-top-color: #111111; border-top-color: #111111;
border-bottom-color: #111111; border-bottom-color: #111111;
} }
@ -1070,8 +992,7 @@
float: none; float: none;
margin-left: 0; margin-left: 0;
} }
.nav-collapse, .nav-collapse,.nav-collapse.collapse {
.nav-collapse.collapse {
height: 0; height: 0;
overflow: hidden; overflow: hidden;
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long