Applied code cleanup
parent
3e23967b46
commit
15aea61fbe
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
*
|
*
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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!");
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
Powered by <a href="https://github.com/mitreid-connect/">MITREid Connect</a> © 2013 The MITRE Corporation.
|
Powered by
|
||||||
|
<a href="https://github.com/mitreid-connect/">MITREid Connect</a>
|
||||||
|
© 2013 The MITRE Corporation.
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
|
@ -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 »</a></p>
|
<p>
|
||||||
|
<a class="btn" href="http://github.com/mitreid-connect/">More
|
||||||
|
»</a>
|
||||||
|
</p>
|
|
@ -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 »</a></p>
|
<p>
|
||||||
|
<a class="btn" href="mailto:idp@example.com?Subject=OpenID Connect">Email
|
||||||
|
»</a>
|
||||||
|
</p>
|
|
@ -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>
|
|
@ -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 »</a></p>
|
<p>
|
||||||
|
<a class="btn btn-primary btn-large" href="http://openid.net/connect/">Learn
|
||||||
|
more »</a>
|
||||||
|
</p>
|
|
@ -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-->
|
|
@ -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>
|
|
@ -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>
|
|
@ -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? -->
|
||||||
|
|
||||||
|
|
|
@ -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? -->
|
||||||
|
|
||||||
|
|
|
@ -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 />
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">×</a>
|
<a href="#" class="close">×</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"
|
||||||
|
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" /> <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>
|
||||||
|
|
||||||
|
|
|
@ -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? -->
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 it is too large
Load Diff
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue