Applied code cleanup
parent
3e23967b46
commit
15aea61fbe
|
@ -20,8 +20,6 @@ import java.math.BigInteger;
|
|||
import java.security.SecureRandom;
|
||||
import java.text.ParseException;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
@ -29,8 +27,6 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import javax.servlet.http.HttpSession;
|
||||
|
||||
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.mitre.jwt.signer.service.JwtSigningAndValidationService;
|
||||
import org.mitre.jwt.signer.service.impl.JWKSetSigningAndValidationServiceCacheService;
|
||||
|
|
|
@ -4,11 +4,6 @@
|
|||
package org.mitre.openid.connect.client.service.impl;
|
||||
|
||||
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.mitre.jwt.signer.service.JwtSigningAndValidationService;
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
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
|
||||
|
|
|
@ -5,7 +5,6 @@ package org.mitre.jose;
|
|||
|
||||
import javax.persistence.Basic;
|
||||
import javax.persistence.Embeddable;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
|
|
|
@ -9,7 +9,6 @@ import javax.persistence.Transient;
|
|||
|
||||
import com.google.common.base.Strings;
|
||||
import com.nimbusds.jose.EncryptionMethod;
|
||||
import com.nimbusds.jose.JWEAlgorithm;
|
||||
|
||||
/**
|
||||
* @author jricher
|
||||
|
|
|
@ -5,8 +5,6 @@ package org.mitre.jose;
|
|||
|
||||
import javax.persistence.Basic;
|
||||
import javax.persistence.Embeddable;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
package org.mitre.jwt.signer.service;
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.PublicKey;
|
||||
import java.util.Map;
|
||||
|
||||
import com.nimbusds.jose.JWSAlgorithm;
|
||||
|
|
|
@ -3,12 +3,6 @@
|
|||
*/
|
||||
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 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.CacheBuilder;
|
||||
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.KeyType;
|
||||
import com.nimbusds.jose.jwk.RSAKey;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -416,6 +416,7 @@ public class ClientDetailsEntity implements ClientDetails {
|
|||
/**
|
||||
* passthrough for SECOAUTH api
|
||||
*/
|
||||
@Override
|
||||
public Set<String> getAuthorizedGrantTypes() {
|
||||
return getGrantTypes();
|
||||
}
|
||||
|
@ -501,6 +502,7 @@ public class ClientDetailsEntity implements ClientDetails {
|
|||
/**
|
||||
* @return the resourceIds
|
||||
*/
|
||||
@Override
|
||||
@ElementCollection(fetch = FetchType.EAGER)
|
||||
@CollectionTable(
|
||||
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).
|
||||
*/
|
||||
@Override
|
||||
@Transient
|
||||
public Map<String, Object> 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.
|
||||
*/
|
||||
@Override
|
||||
@Basic
|
||||
@Column(name="token_value")
|
||||
public String getValue() {
|
||||
|
@ -177,6 +179,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
|
|||
setJwt(JWTParser.parse(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Basic
|
||||
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
|
||||
public Date getExpiration() {
|
||||
|
@ -187,6 +190,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
|
|||
this.expiration = expiration;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Basic
|
||||
@Column(name="token_type")
|
||||
public String getTokenType() {
|
||||
|
@ -197,6 +201,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
|
|||
this.tokenType = tokenType;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ManyToOne
|
||||
@JoinColumn(name="refresh_token_id")
|
||||
public OAuth2RefreshTokenEntity getRefreshToken() {
|
||||
|
@ -216,6 +221,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
|
|||
setRefreshToken((OAuth2RefreshTokenEntity)refreshToken);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ElementCollection(fetch=FetchType.EAGER)
|
||||
@CollectionTable(
|
||||
joinColumns=@JoinColumn(name="owner_id"),
|
||||
|
@ -229,6 +235,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
|
|||
this.scope = scope;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transient
|
||||
public boolean isExpired() {
|
||||
return getExpiration() == null ? false : System.currentTimeMillis() > getExpiration().getTime();
|
||||
|
|
|
@ -39,9 +39,7 @@ import javax.persistence.Transient;
|
|||
import org.springframework.security.oauth2.common.OAuth2RefreshToken;
|
||||
|
||||
import com.nimbusds.jwt.JWT;
|
||||
import com.nimbusds.jwt.JWTClaimsSet;
|
||||
import com.nimbusds.jwt.JWTParser;
|
||||
import com.nimbusds.jwt.PlainJWT;
|
||||
|
||||
/**
|
||||
* @author jricher
|
||||
|
@ -114,6 +112,7 @@ public class OAuth2RefreshTokenEntity implements OAuth2RefreshToken {
|
|||
/**
|
||||
* Get the JWT-encoded value of this token
|
||||
*/
|
||||
@Override
|
||||
@Basic
|
||||
@Column(name="token_value")
|
||||
public String getValue() {
|
||||
|
|
|
@ -27,6 +27,7 @@ public interface ClientDetailsEntityService extends ClientDetailsService {
|
|||
|
||||
public ClientDetailsEntity getClientById(Long id);
|
||||
|
||||
@Override
|
||||
public ClientDetailsEntity loadClientByClientId(String clientId) throws OAuth2Exception;
|
||||
|
||||
public void deleteClient(ClientDetailsEntity client);
|
||||
|
|
|
@ -26,6 +26,7 @@ import org.springframework.security.oauth2.provider.token.ResourceServerTokenSer
|
|||
|
||||
public interface OAuth2TokenEntityService extends AuthorizationServerTokenServices, ResourceServerTokenServices {
|
||||
|
||||
@Override
|
||||
public OAuth2AccessTokenEntity readAccessToken(String accessTokenValue);
|
||||
|
||||
public OAuth2RefreshTokenEntity getRefreshToken(String refreshTokenValue);
|
||||
|
@ -44,6 +45,7 @@ public interface OAuth2TokenEntityService extends AuthorizationServerTokenServic
|
|||
|
||||
public OAuth2RefreshTokenEntity saveRefreshToken(OAuth2RefreshTokenEntity refreshToken);
|
||||
|
||||
@Override
|
||||
public OAuth2AccessTokenEntity getAccessToken(OAuth2Authentication authentication);
|
||||
|
||||
public OAuth2AccessTokenEntity getAccessTokenById(Long id);
|
||||
|
|
|
@ -17,7 +17,6 @@ package org.mitre.oauth2.service.impl;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
|
|
|
@ -358,6 +358,7 @@ public class DefaultUserInfo implements UserInfo {
|
|||
/**
|
||||
* @return the birthdate
|
||||
*/
|
||||
@Override
|
||||
@Basic
|
||||
@Column(name="birthdate")
|
||||
public String getBirthdate() {
|
||||
|
@ -366,6 +367,7 @@ public class DefaultUserInfo implements UserInfo {
|
|||
/**
|
||||
* @param birthdate the birthdate to set
|
||||
*/
|
||||
@Override
|
||||
public void setBirthdate(String birthdate) {
|
||||
this.birthdate = birthdate;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.mitre.openid.connect.repository;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.mitre.openid.connect.model.Nonce;
|
||||
|
||||
/**
|
||||
|
|
|
@ -46,6 +46,7 @@ public class JpaOAuth2ClientRepository implements OAuth2ClientRepository {
|
|||
this.manager = manager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClientDetailsEntity getById(Long id) {
|
||||
return manager.find(ClientDetailsEntity.class, id);
|
||||
}
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
*/
|
||||
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.Set;
|
||||
|
||||
|
@ -15,9 +18,6 @@ import org.mitre.oauth2.repository.SystemScopeRepository;
|
|||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import static org.mitre.util.jpa.JpaUtil.getSingleResult;
|
||||
import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
|
||||
|
||||
/**
|
||||
* @author jricher
|
||||
*
|
||||
|
|
|
@ -101,6 +101,7 @@ public class DefaultOAuth2ClientDetailsEntityService implements ClientDetailsEnt
|
|||
/**
|
||||
* Get the client by its internal ID
|
||||
*/
|
||||
@Override
|
||||
public ClientDetailsEntity getClientById(Long id) {
|
||||
ClientDetailsEntity client = clientRepository.getById(id);
|
||||
|
||||
|
|
|
@ -84,6 +84,7 @@ public class TokenIntrospectionView extends AbstractView {
|
|||
|
||||
})
|
||||
.registerTypeAdapter(OAuth2AccessTokenEntity.class, new JsonSerializer<OAuth2AccessTokenEntity>() {
|
||||
@Override
|
||||
public JsonElement serialize(OAuth2AccessTokenEntity src, Type typeOfSrc, JsonSerializationContext context) {
|
||||
JsonObject token = new JsonObject();
|
||||
|
||||
|
|
|
@ -5,9 +5,6 @@ package org.mitre.oauth2.web;
|
|||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.persistence.EntityExistsException;
|
||||
import javax.persistence.TransactionRequiredException;
|
||||
|
||||
import org.mitre.oauth2.model.SystemScope;
|
||||
import org.mitre.oauth2.service.SystemScopeService;
|
||||
import org.slf4j.Logger;
|
||||
|
|
|
@ -25,7 +25,6 @@ import javax.persistence.TypedQuery;
|
|||
|
||||
import org.mitre.openid.connect.model.ApprovedSite;
|
||||
import org.mitre.openid.connect.repository.ApprovedSiteRepository;
|
||||
import org.mitre.util.jpa.JpaUtil;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ import javax.persistence.EntityManager;
|
|||
import javax.persistence.PersistenceContext;
|
||||
import javax.persistence.TypedQuery;
|
||||
|
||||
import org.mitre.openid.connect.model.ApprovedSite;
|
||||
import org.mitre.openid.connect.model.Nonce;
|
||||
import org.mitre.openid.connect.repository.NonceRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
******************************************************************************/
|
||||
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.saveOrUpdate;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ public class DefaultNonceService implements NonceService, InitializingBean {
|
|||
/**
|
||||
* Make sure that the nonce storage duration was set
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
if (nonceStorageDuration == null) {
|
||||
logger.error("Nonce storage duration must be set!");
|
||||
|
|
|
@ -17,11 +17,9 @@ import org.mitre.jose.JWSAlgorithmEmbed;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.validation.BeanPropertyBindingResult;
|
||||
import org.springframework.web.servlet.view.AbstractView;
|
||||
|
||||
import com.google.gson.ExclusionStrategy;
|
||||
import com.google.gson.FieldAttributes;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonElement;
|
||||
|
@ -85,6 +83,7 @@ public abstract class AbstractClientEntityView extends AbstractView {
|
|||
protected abstract ExclusionStrategy getExclusionStrategy();
|
||||
|
||||
|
||||
@Override
|
||||
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
|
||||
|
||||
response.setContentType("application/json");
|
||||
|
|
|
@ -3,34 +3,14 @@
|
|||
*/
|
||||
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 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.validation.BeanPropertyBindingResult;
|
||||
import org.springframework.web.servlet.view.AbstractView;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.gson.ExclusionStrategy;
|
||||
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
|
||||
*/
|
||||
@Override
|
||||
protected ExclusionStrategy getExclusionStrategy() {
|
||||
return new ExclusionStrategy() {
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipField(FieldAttributes f) {
|
||||
if (blacklistedFields.contains(f.getName())) {
|
||||
return true;
|
||||
|
@ -59,6 +41,7 @@ public class ClientEntityViewForAdmins extends AbstractClientEntityView {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipClass(Class<?> clazz) {
|
||||
// skip the JPA binding wrapper
|
||||
if (clazz.equals(BeanPropertyBindingResult.class)) {
|
||||
|
|
|
@ -3,34 +3,14 @@
|
|||
*/
|
||||
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 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.validation.BeanPropertyBindingResult;
|
||||
import org.springframework.web.servlet.view.AbstractView;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.gson.ExclusionStrategy;
|
||||
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() {
|
||||
return new ExclusionStrategy() {
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipField(FieldAttributes f) {
|
||||
// whitelist the handful of fields that are good
|
||||
if (whitelistedFields.contains(f.getName())) {
|
||||
|
@ -62,6 +43,7 @@ public class ClientEntityViewForUsers extends AbstractClientEntityView {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipClass(Class<?> clazz) {
|
||||
// skip the JPA binding wrapper
|
||||
if (clazz.equals(BeanPropertyBindingResult.class)) {
|
||||
|
|
|
@ -55,6 +55,7 @@ public class JSONUserInfoView extends AbstractView {
|
|||
/* (non-Javadoc)
|
||||
* @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) {
|
||||
|
||||
UserInfo userInfo = (UserInfo) model.get("userInfo");
|
||||
|
@ -64,11 +65,13 @@ public class JSONUserInfoView extends AbstractView {
|
|||
Gson gson = new GsonBuilder()
|
||||
.setExclusionStrategies(new ExclusionStrategy() {
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipField(FieldAttributes f) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipClass(Class<?> clazz) {
|
||||
// skip the JPA binding wrapper
|
||||
if (clazz.equals(BeanPropertyBindingResult.class)) {
|
||||
|
|
|
@ -40,11 +40,13 @@ public class JsonApprovedSiteView extends AbstractView {
|
|||
private Gson gson = new GsonBuilder()
|
||||
.setExclusionStrategies(new ExclusionStrategy() {
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipField(FieldAttributes f) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipClass(Class<?> clazz) {
|
||||
// skip the JPA binding wrapper
|
||||
if (clazz.equals(BeanPropertyBindingResult.class)) {
|
||||
|
@ -67,6 +69,7 @@ public class JsonApprovedSiteView extends AbstractView {
|
|||
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
|
||||
.create();
|
||||
|
||||
@Override
|
||||
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
|
||||
|
||||
response.setContentType("application/json");
|
||||
|
|
|
@ -34,11 +34,13 @@ public class JsonEntityView extends AbstractView {
|
|||
private Gson gson = new GsonBuilder()
|
||||
.setExclusionStrategies(new ExclusionStrategy() {
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipField(FieldAttributes f) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipClass(Class<?> clazz) {
|
||||
// skip the JPA binding wrapper
|
||||
if (clazz.equals(BeanPropertyBindingResult.class)) {
|
||||
|
@ -52,6 +54,7 @@ public class JsonEntityView extends AbstractView {
|
|||
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
|
||||
.create();
|
||||
|
||||
@Override
|
||||
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
|
||||
|
||||
response.setContentType("application/json");
|
||||
|
|
|
@ -32,11 +32,13 @@ public class JsonErrorView extends AbstractView {
|
|||
private Gson gson = new GsonBuilder()
|
||||
.setExclusionStrategies(new ExclusionStrategy() {
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipField(FieldAttributes f) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipClass(Class<?> clazz) {
|
||||
// skip the JPA binding wrapper
|
||||
if (clazz.equals(BeanPropertyBindingResult.class)) {
|
||||
|
@ -50,6 +52,7 @@ public class JsonErrorView extends AbstractView {
|
|||
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
|
||||
.create();
|
||||
|
||||
@Override
|
||||
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
|
||||
|
||||
response.setContentType("application/json");
|
||||
|
|
|
@ -45,6 +45,7 @@ public class POCOUserInfoView extends AbstractView {
|
|||
/* (non-Javadoc)
|
||||
* @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) {
|
||||
|
||||
UserInfo userInfo = (UserInfo) model.get("userInfo");
|
||||
|
@ -54,11 +55,13 @@ public class POCOUserInfoView extends AbstractView {
|
|||
Gson gson = new GsonBuilder()
|
||||
.setExclusionStrategies(new ExclusionStrategy() {
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipField(FieldAttributes f) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipClass(Class<?> clazz) {
|
||||
// skip the JPA binding wrapper
|
||||
if (clazz.equals(BeanPropertyBindingResult.class)) {
|
||||
|
|
|
@ -31,11 +31,13 @@ public class StatsSummary extends AbstractView {
|
|||
Gson gson = new GsonBuilder()
|
||||
.setExclusionStrategies(new ExclusionStrategy() {
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipField(FieldAttributes f) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipClass(Class<?> clazz) {
|
||||
// skip the JPA binding wrapper
|
||||
if (clazz.equals(BeanPropertyBindingResult.class)) {
|
||||
|
|
|
@ -17,7 +17,6 @@ package org.mitre.openid.connect.web;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import org.mitre.openid.connect.config.ConfigurationPropertiesBean;
|
||||
import org.mitre.openid.connect.service.StatsService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
|
|
|
@ -9,7 +9,6 @@ import javax.servlet.http.HttpServletRequest;
|
|||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.mitre.openid.connect.model.UserInfo;
|
||||
import org.mitre.openid.connect.repository.UserInfoRepository;
|
||||
import org.mitre.openid.connect.service.UserInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<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>
|
||||
More information about the project can be found on our GitHub page: <a href="http://github.com/mitreid-connect/">MTIREid Connect on GitHub</a>
|
||||
There, you can submit bug reports, give feedback, or even contribute code patches for additional features you'd like to see.
|
||||
More information about the project can be found on our GitHub page: <a
|
||||
href="http://github.com/mitreid-connect/">MTIREid Connect on
|
||||
GitHub</a> There, you can submit bug reports, give feedback, or even
|
||||
contribute code patches for additional features you'd like to see.
|
||||
</p>
|
|
@ -1,5 +1,6 @@
|
|||
<%@ 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')">
|
||||
<li class="nav-header">Administrative</li>
|
||||
<li><a href="manage/#admin/clients">Manage Clients</a></li>
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<h2>Contact</h2>
|
||||
<p>
|
||||
For general assistance, email Bob at <a href="mailto:email@address.com?Subject=OIDC%20Server%20Assistance">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>.
|
||||
For general assistance, email Bob at <a
|
||||
href="mailto:email@address.com?Subject=OIDC%20Server%20Assistance">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>
|
||||
|
|
|
@ -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="o" tagdir="/WEB-INF/tags"%>
|
||||
<div id="push"></div>
|
||||
</div> <!-- end #wrap -->
|
||||
</div>
|
||||
<!-- end #wrap -->
|
||||
<div id="footer">
|
||||
<div class="container">
|
||||
<p class="muted credit"><o:copyright /></p>
|
||||
<p class="muted credit">
|
||||
<o:copyright />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Le javascript
|
||||
================================================== -->
|
||||
<!-- 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/backbone.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 != ''}">
|
||||
<script type="text/javascript" src="resources/js/client.js"></script>
|
||||
<script type="text/javascript" src="resources/js/grant.js"></script>
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
<head>
|
||||
|
||||
<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">
|
||||
<title>OpenID Connect - ${title}</title>
|
||||
|
@ -17,9 +18,7 @@
|
|||
<!-- Le styles -->
|
||||
<link href="resources/bootstrap2/css/bootstrap.min.css" rel="stylesheet">
|
||||
<style type="text/css">
|
||||
|
||||
html,
|
||||
body {
|
||||
html,body {
|
||||
height: 100%;
|
||||
/* The html and body elements cannot have any padding or margin. */
|
||||
}
|
||||
|
@ -46,10 +45,10 @@
|
|||
}
|
||||
|
||||
/* Set the fixed height of the footer here */
|
||||
#push,
|
||||
#footer {
|
||||
#push,#footer {
|
||||
min-height: 60px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
@ -67,16 +66,17 @@
|
|||
}
|
||||
|
||||
a.brand {
|
||||
background: url('${config.logoImageUrl}') no-repeat scroll 7px 7px transparent;
|
||||
background: url('${config.logoImageUrl}') no-repeat scroll 7px 7px
|
||||
transparent;
|
||||
}
|
||||
</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">
|
||||
@media ( min-width : 768px) and (max-width: 979px) {
|
||||
.main {
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media ( max-width : 767px) {
|
||||
|
@ -87,8 +87,6 @@
|
|||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
|
||||
|
@ -98,9 +96,12 @@
|
|||
|
||||
<!-- Le fav and touch icons -->
|
||||
<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="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">
|
||||
<link rel="apple-touch-icon-precomposed" sizes="114x114"
|
||||
href="../bootstrap2/ico/apple-touch-icon-114-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 -->
|
||||
<script type="text/javascript" src="resources/js/lib/jquery.js"></script>
|
||||
|
@ -113,7 +114,10 @@
|
|||
<strong>Warning!</strong>
|
||||
<div class="modal-body"></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 id="wrap">
|
|
@ -1,5 +1,9 @@
|
|||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<p>There have been
|
||||
<span class="label label-info">${statsSummary["userCount"]}</span> user${statsSummary["userCount"] == 1 ? "" : "s"}
|
||||
of this system who have logged in to
|
||||
<span class="label label-info">${statsSummary["clientCount"]}</span> total site${statsSummary["clientCount"] == 1 ? "" : "s"},
|
||||
for a total of
|
||||
<span class="label label-info">${statsSummary["approvalCount"]}</span> site approval${statsSummary["approvalCount"] == 1 ? "" : "s"}.</p>
|
||||
<p>
|
||||
There have been <span class="label label-info">${statsSummary["userCount"]}</span>
|
||||
user${statsSummary["userCount"] == 1 ? "" : "s"} of this system who
|
||||
have logged in to <span class="label label-info">${statsSummary["clientCount"]}</span>
|
||||
total site${statsSummary["clientCount"] == 1 ? "" : "s"}, for a total
|
||||
of <span class="label label-info">${statsSummary["approvalCount"]}</span>
|
||||
site approval${statsSummary["approvalCount"] == 1 ? "" : "s"}.
|
||||
</p>
|
|
@ -1,8 +1,11 @@
|
|||
<h1>Welcome!</h1>
|
||||
|
||||
<p>OpenID Connect is a next-generation protocol built on top of the OAuth2 authorization framework.
|
||||
OpenID Connect lets you log into a remote site using your identity without exposing your
|
||||
credentials, like a username and password.
|
||||
</p>
|
||||
<p>OpenID Connect is a next-generation protocol built on top of the
|
||||
OAuth2 authorization framework. OpenID Connect lets you log into a
|
||||
remote site using your identity without exposing your credentials, like
|
||||
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"%>
|
||||
|
||||
<div class="span2 visible-desktop">
|
||||
|
@ -8,13 +9,18 @@
|
|||
<ul class="nav nav-list">
|
||||
<o:actionmenu />
|
||||
</ul>
|
||||
</div><!--/.well -->
|
||||
</div>
|
||||
<!--/.well -->
|
||||
</security:authorize>
|
||||
<security:authorize access="!hasRole('ROLE_USER')">
|
||||
<div class="well">
|
||||
<div>You are not logged in.</div>
|
||||
<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>
|
||||
</security:authorize>
|
||||
</div><!--/span-->
|
||||
</div>
|
||||
<!--/span-->
|
|
@ -1,8 +1,10 @@
|
|||
<h2>Current Statistics</h2>
|
||||
|
||||
<p>There have been
|
||||
<span class="label label-info">${statsSummary["userCount"]}</span> user${statsSummary["userCount"] == 1 ? "" : "s"}
|
||||
of this system who have logged in to
|
||||
<span class="label label-info">${statsSummary["clientCount"]}</span> total site${statsSummary["clientCount"] == 1 ? "" : "s"},
|
||||
for a total of
|
||||
<span class="label label-info">${statsSummary["approvalCount"]}</span> site approval${statsSummary["approvalCount"] == 1 ? "" : "s"}.</p>
|
||||
<p>
|
||||
There have been <span class="label label-info">${statsSummary["userCount"]}</span>
|
||||
user${statsSummary["userCount"] == 1 ? "" : "s"} of this system who
|
||||
have logged in to <span class="label label-info">${statsSummary["clientCount"]}</span>
|
||||
total site${statsSummary["clientCount"] == 1 ? "" : "s"}, for a total
|
||||
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"%>
|
||||
<%@ 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"%>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty userInfo.preferredUsername }">
|
||||
|
@ -16,8 +17,10 @@
|
|||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty userInfo.givenName || not empty userInfo.familyName }">
|
||||
<c:set var="longName" value="${ userInfo.givenName } {$ userInfo.familyName }" />
|
||||
<c:when
|
||||
test="${ not empty userInfo.givenName || not empty userInfo.familyName }">
|
||||
<c:set var="longName"
|
||||
value="${ userInfo.givenName } {$ userInfo.familyName }" />
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="longName" value="${ shortName }" />
|
||||
|
@ -28,10 +31,10 @@
|
|||
<div class="navbar navbar-fixed-top">
|
||||
<div class="navbar-inner">
|
||||
<div class="container">
|
||||
<button class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<button class="btn btn-navbar" data-toggle="collapse"
|
||||
data-target=".nav-collapse">
|
||||
<span class="icon-bar"></span> <span class="icon-bar"></span> <span
|
||||
class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="brand" href="">${config.topbarTitle}</a>
|
||||
<div class="nav-collapse collapse">
|
||||
|
@ -72,12 +75,12 @@
|
|||
|
||||
<security:authorize access="hasRole('ROLE_USER')">
|
||||
|
||||
<li class="dropdown hidden-desktop">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Action <b class="caret"></b></a>
|
||||
<li class="dropdown hidden-desktop"><a href="#"
|
||||
class="dropdown-toggle" data-toggle="dropdown">Action <b
|
||||
class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<o:actionmenu />
|
||||
</ul>
|
||||
</li>
|
||||
</ul></li>
|
||||
|
||||
</security:authorize>
|
||||
|
||||
|
@ -85,20 +88,26 @@
|
|||
<ul class="nav pull-right">
|
||||
<security:authorize access="hasRole('ROLE_USER')">
|
||||
<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">
|
||||
<li><a>${ longName }</a></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>
|
||||
</div>
|
||||
</security:authorize>
|
||||
<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>
|
||||
</ul>
|
||||
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
<!--/.nav-collapse -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,6 +1,7 @@
|
|||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||
<%@ 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? -->
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||
<%@ 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? -->
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||
<%@ 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: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="o" tagdir="/WEB-INF/tags"%>
|
||||
<o:header title="Log In" />
|
||||
|
@ -17,14 +18,28 @@ $(document).ready(function() {
|
|||
<h1>Login with Username and Password</h1>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
<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"><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>
|
||||
<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">
|
||||
<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>
|
||||
</form>
|
||||
|
||||
|
|
|
@ -9,9 +9,7 @@
|
|||
<div class="span10">
|
||||
<div class="content span12">
|
||||
<o:breadcrumbs crumb="Manage Clients" />
|
||||
<span id="content">
|
||||
loading...
|
||||
</span>
|
||||
<span id="content"> loading... </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
<%@ page import="org.springframework.security.core.AuthenticationException" %>
|
||||
<%@ page 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" %>
|
||||
<%@ page
|
||||
import="org.springframework.security.core.AuthenticationException"%>
|
||||
<%@ page
|
||||
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="o" tagdir="/WEB-INF/tags"%>
|
||||
<o:header title="Approve Access" />
|
||||
|
@ -11,9 +15,10 @@
|
|||
<div class="alert-message error">
|
||||
<a href="#" class="close">×</a>
|
||||
|
||||
<p><strong>Access could not be granted.</strong>
|
||||
(<%= ((AuthenticationException) session.getAttribute(AbstractAuthenticationProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY)).getMessage() %>
|
||||
)</p>
|
||||
<p>
|
||||
<strong>Access could not be granted.</strong> (<%= ((AuthenticationException) session.getAttribute(AbstractAuthenticationProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY)).getMessage() %>
|
||||
)
|
||||
</p>
|
||||
</div>
|
||||
<% } %>
|
||||
<c:remove scope="session" var="SPRING_SECURITY_LAST_EXCEPTION" />
|
||||
|
@ -21,7 +26,8 @@
|
|||
<div class="well" style="text-align: center">
|
||||
<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="span4 offset2 well-small" style="text-align: left">
|
||||
|
@ -29,42 +35,47 @@
|
|||
<%-- TODO: wire up to stats engine and customize display of this block --%>
|
||||
<c:if test="${ client.dynamicallyRegistered }">
|
||||
<div class="alert alert-block alert-info">
|
||||
<h4><i class="icon-globe"></i> Caution:</h4>
|
||||
This client was dynamically registered and has very few
|
||||
other users on this system.
|
||||
<h4>
|
||||
<i class="icon-globe"></i> Caution:
|
||||
</h4>
|
||||
This client was dynamically registered and has very few other
|
||||
users on this system.
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${ not empty client.logoUri }">
|
||||
<ul class="thumbnails">
|
||||
<li class="span4">
|
||||
<div class="thumbnail"><img src="${client.logoUri }"/></div>
|
||||
<div class="thumbnail">
|
||||
<img src="${client.logoUri }" />
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</c:if>
|
||||
Do you authorize
|
||||
"<c:choose>
|
||||
Do you authorize "
|
||||
<c:choose>
|
||||
<c:when test="${empty client.clientName}">
|
||||
<c:out value="${client.clientId}" />
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="${client.clientName}" />
|
||||
</c:otherwise>
|
||||
</c:choose>"
|
||||
to sign you into their site using your identity?
|
||||
</c:choose>
|
||||
" to sign you into their site using your identity?
|
||||
<c:if test="${not empty client.clientDescription}">
|
||||
<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>
|
||||
<p>
|
||||
<blockquote id="description" style="display: none">
|
||||
${client.clientDescription}
|
||||
</blockquote>
|
||||
${client.clientDescription}</blockquote>
|
||||
</p>
|
||||
</c:if>
|
||||
<div>
|
||||
<small>
|
||||
<strong>Redirect URI: </strong><c:out value="${redirect_uri}"/>
|
||||
<small> <strong>Redirect URI: </strong>
|
||||
<c:out value="${redirect_uri}" />
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -74,12 +85,13 @@
|
|||
|
||||
<c:forEach var="scope" items="${ scopes }">
|
||||
|
||||
<label for="scope_${ scope.value }" class="checkbox">
|
||||
<input type="checkbox" name="scope_${ scope.value }" id="scope_${ scope.value }" value="${ scope.value }" checked="checked">
|
||||
<c:if test="${ not empty scope.icon }">
|
||||
<label for="scope_${ scope.value }" class="checkbox"> <input
|
||||
type="checkbox" name="scope_${ scope.value }"
|
||||
id="scope_${ scope.value }" value="${ scope.value }"
|
||||
checked="checked"> <c:if
|
||||
test="${ not empty scope.icon }">
|
||||
<i class="icon-${ scope.icon }"></i>
|
||||
</c:if>
|
||||
<c:choose>
|
||||
</c:if> <c:choose>
|
||||
<c:when test="${ not empty scope.description }">
|
||||
${ scope.description }
|
||||
</c:when>
|
||||
|
@ -95,16 +107,15 @@
|
|||
|
||||
<fieldset style="text-align: left" class="well">
|
||||
<legend style="margin-bottom: 0;">Remember this decision:</legend>
|
||||
<label for="remember-forever" class="radio">
|
||||
<input type="radio" name="remember" id="remember-forever" value="until-revoked" checked="checked">
|
||||
remember this decision until I revoke it
|
||||
</label>
|
||||
<label for="remember-hour" class="radio">
|
||||
<input type="radio" name="remember" id="remember-hour" value="one-hour">
|
||||
<label for="remember-forever" class="radio"> <input
|
||||
type="radio" name="remember" id="remember-forever"
|
||||
value="until-revoked" checked="checked"> remember this
|
||||
decision until I revoke it
|
||||
</label> <label for="remember-hour" class="radio"> <input
|
||||
type="radio" name="remember" id="remember-hour" value="one-hour">
|
||||
remember this decision for one hour
|
||||
</label>
|
||||
<label for="remember-not" class="radio">
|
||||
<input type="radio" name="remember" id="remember-not" value="none">
|
||||
</label> <label for="remember-not" class="radio"> <input
|
||||
type="radio" name="remember" id="remember-not" value="none">
|
||||
prompt me again next time
|
||||
</label>
|
||||
</fieldset>
|
||||
|
@ -114,11 +125,13 @@
|
|||
|
||||
|
||||
<div class="row">
|
||||
<input id="user_oauth_approval" name="user_oauth_approval" value="true" type="hidden"/>
|
||||
<input name="authorize" value="Authorize" type="submit"
|
||||
onclick="$('#user_oauth_approval').attr('value',true)" class="btn btn-success btn-large"/>
|
||||
|
||||
<input name="deny" value="Deny" type="submit" onclick="$('#user_oauth_approval').attr('value',false)"
|
||||
<input id="user_oauth_approval" name="user_oauth_approval"
|
||||
value="true" type="hidden" /> <input name="authorize"
|
||||
value="Authorize" type="submit"
|
||||
onclick="$('#user_oauth_approval').attr('value',true)"
|
||||
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" />
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||
<%@ 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? -->
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
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">
|
||||
|
||||
<!-- 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>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
*
|
||||
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||
*/
|
||||
|
||||
@-ms-viewport {
|
||||
@
|
||||
-ms-viewport {
|
||||
width: device-width;
|
||||
}
|
||||
|
||||
|
@ -16,8 +16,7 @@
|
|||
*zoom: 1;
|
||||
}
|
||||
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
.clearfix:before,.clearfix:after {
|
||||
display: table;
|
||||
line-height: 0;
|
||||
content: "";
|
||||
|
@ -100,8 +99,7 @@
|
|||
margin-left: -30px;
|
||||
*zoom: 1;
|
||||
}
|
||||
.row:before,
|
||||
.row:after {
|
||||
.row:before,.row:after {
|
||||
display: table;
|
||||
line-height: 0;
|
||||
content: "";
|
||||
|
@ -114,10 +112,8 @@
|
|||
min-height: 1px;
|
||||
margin-left: 30px;
|
||||
}
|
||||
.container,
|
||||
.navbar-static-top .container,
|
||||
.navbar-fixed-top .container,
|
||||
.navbar-fixed-bottom .container {
|
||||
.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container
|
||||
{
|
||||
width: 1170px;
|
||||
}
|
||||
.span12 {
|
||||
|
@ -196,8 +192,7 @@
|
|||
width: 100%;
|
||||
*zoom: 1;
|
||||
}
|
||||
.row-fluid:before,
|
||||
.row-fluid:after {
|
||||
.row-fluid:before,.row-fluid:after {
|
||||
display: table;
|
||||
line-height: 0;
|
||||
content: "";
|
||||
|
@ -366,72 +361,46 @@
|
|||
margin-left: 8.547008547008547%;
|
||||
*margin-left: 8.440625568285142%;
|
||||
}
|
||||
input,
|
||||
textarea,
|
||||
.uneditable-input {
|
||||
input,textarea,.uneditable-input {
|
||||
margin-left: 0;
|
||||
}
|
||||
.controls-row [class*="span"]+[class*="span"] {
|
||||
margin-left: 30px;
|
||||
}
|
||||
input.span12,
|
||||
textarea.span12,
|
||||
.uneditable-input.span12 {
|
||||
input.span12,textarea.span12,.uneditable-input.span12 {
|
||||
width: 1156px;
|
||||
}
|
||||
input.span11,
|
||||
textarea.span11,
|
||||
.uneditable-input.span11 {
|
||||
input.span11,textarea.span11,.uneditable-input.span11 {
|
||||
width: 1056px;
|
||||
}
|
||||
input.span10,
|
||||
textarea.span10,
|
||||
.uneditable-input.span10 {
|
||||
input.span10,textarea.span10,.uneditable-input.span10 {
|
||||
width: 956px;
|
||||
}
|
||||
input.span9,
|
||||
textarea.span9,
|
||||
.uneditable-input.span9 {
|
||||
input.span9,textarea.span9,.uneditable-input.span9 {
|
||||
width: 856px;
|
||||
}
|
||||
input.span8,
|
||||
textarea.span8,
|
||||
.uneditable-input.span8 {
|
||||
input.span8,textarea.span8,.uneditable-input.span8 {
|
||||
width: 756px;
|
||||
}
|
||||
input.span7,
|
||||
textarea.span7,
|
||||
.uneditable-input.span7 {
|
||||
input.span7,textarea.span7,.uneditable-input.span7 {
|
||||
width: 656px;
|
||||
}
|
||||
input.span6,
|
||||
textarea.span6,
|
||||
.uneditable-input.span6 {
|
||||
input.span6,textarea.span6,.uneditable-input.span6 {
|
||||
width: 556px;
|
||||
}
|
||||
input.span5,
|
||||
textarea.span5,
|
||||
.uneditable-input.span5 {
|
||||
input.span5,textarea.span5,.uneditable-input.span5 {
|
||||
width: 456px;
|
||||
}
|
||||
input.span4,
|
||||
textarea.span4,
|
||||
.uneditable-input.span4 {
|
||||
input.span4,textarea.span4,.uneditable-input.span4 {
|
||||
width: 356px;
|
||||
}
|
||||
input.span3,
|
||||
textarea.span3,
|
||||
.uneditable-input.span3 {
|
||||
input.span3,textarea.span3,.uneditable-input.span3 {
|
||||
width: 256px;
|
||||
}
|
||||
input.span2,
|
||||
textarea.span2,
|
||||
.uneditable-input.span2 {
|
||||
input.span2,textarea.span2,.uneditable-input.span2 {
|
||||
width: 156px;
|
||||
}
|
||||
input.span1,
|
||||
textarea.span1,
|
||||
.uneditable-input.span1 {
|
||||
input.span1,textarea.span1,.uneditable-input.span1 {
|
||||
width: 56px;
|
||||
}
|
||||
.thumbnails {
|
||||
|
@ -450,8 +419,7 @@
|
|||
margin-left: -20px;
|
||||
*zoom: 1;
|
||||
}
|
||||
.row:before,
|
||||
.row:after {
|
||||
.row:before,.row:after {
|
||||
display: table;
|
||||
line-height: 0;
|
||||
content: "";
|
||||
|
@ -464,10 +432,8 @@
|
|||
min-height: 1px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.container,
|
||||
.navbar-static-top .container,
|
||||
.navbar-fixed-top .container,
|
||||
.navbar-fixed-bottom .container {
|
||||
.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container
|
||||
{
|
||||
width: 724px;
|
||||
}
|
||||
.span12 {
|
||||
|
@ -546,8 +512,7 @@
|
|||
width: 100%;
|
||||
*zoom: 1;
|
||||
}
|
||||
.row-fluid:before,
|
||||
.row-fluid:after {
|
||||
.row-fluid:before,.row-fluid:after {
|
||||
display: table;
|
||||
line-height: 0;
|
||||
content: "";
|
||||
|
@ -716,72 +681,46 @@
|
|||
margin-left: 8.56353591160221%;
|
||||
*margin-left: 8.457152932878806%;
|
||||
}
|
||||
input,
|
||||
textarea,
|
||||
.uneditable-input {
|
||||
input,textarea,.uneditable-input {
|
||||
margin-left: 0;
|
||||
}
|
||||
.controls-row [class*="span"]+[class*="span"] {
|
||||
margin-left: 20px;
|
||||
}
|
||||
input.span12,
|
||||
textarea.span12,
|
||||
.uneditable-input.span12 {
|
||||
input.span12,textarea.span12,.uneditable-input.span12 {
|
||||
width: 710px;
|
||||
}
|
||||
input.span11,
|
||||
textarea.span11,
|
||||
.uneditable-input.span11 {
|
||||
input.span11,textarea.span11,.uneditable-input.span11 {
|
||||
width: 648px;
|
||||
}
|
||||
input.span10,
|
||||
textarea.span10,
|
||||
.uneditable-input.span10 {
|
||||
input.span10,textarea.span10,.uneditable-input.span10 {
|
||||
width: 586px;
|
||||
}
|
||||
input.span9,
|
||||
textarea.span9,
|
||||
.uneditable-input.span9 {
|
||||
input.span9,textarea.span9,.uneditable-input.span9 {
|
||||
width: 524px;
|
||||
}
|
||||
input.span8,
|
||||
textarea.span8,
|
||||
.uneditable-input.span8 {
|
||||
input.span8,textarea.span8,.uneditable-input.span8 {
|
||||
width: 462px;
|
||||
}
|
||||
input.span7,
|
||||
textarea.span7,
|
||||
.uneditable-input.span7 {
|
||||
input.span7,textarea.span7,.uneditable-input.span7 {
|
||||
width: 400px;
|
||||
}
|
||||
input.span6,
|
||||
textarea.span6,
|
||||
.uneditable-input.span6 {
|
||||
input.span6,textarea.span6,.uneditable-input.span6 {
|
||||
width: 338px;
|
||||
}
|
||||
input.span5,
|
||||
textarea.span5,
|
||||
.uneditable-input.span5 {
|
||||
input.span5,textarea.span5,.uneditable-input.span5 {
|
||||
width: 276px;
|
||||
}
|
||||
input.span4,
|
||||
textarea.span4,
|
||||
.uneditable-input.span4 {
|
||||
input.span4,textarea.span4,.uneditable-input.span4 {
|
||||
width: 214px;
|
||||
}
|
||||
input.span3,
|
||||
textarea.span3,
|
||||
.uneditable-input.span3 {
|
||||
input.span3,textarea.span3,.uneditable-input.span3 {
|
||||
width: 152px;
|
||||
}
|
||||
input.span2,
|
||||
textarea.span2,
|
||||
.uneditable-input.span2 {
|
||||
input.span2,textarea.span2,.uneditable-input.span2 {
|
||||
width: 90px;
|
||||
}
|
||||
input.span1,
|
||||
textarea.span1,
|
||||
.uneditable-input.span1 {
|
||||
input.span1,textarea.span1,.uneditable-input.span1 {
|
||||
width: 28px;
|
||||
}
|
||||
}
|
||||
|
@ -791,9 +730,7 @@
|
|||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom,
|
||||
.navbar-static-top {
|
||||
.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top {
|
||||
margin-right: -20px;
|
||||
margin-left: -20px;
|
||||
}
|
||||
|
@ -815,17 +752,15 @@
|
|||
.row-fluid {
|
||||
width: 100%;
|
||||
}
|
||||
.row,
|
||||
.thumbnails {
|
||||
.row,.thumbnails {
|
||||
margin-left: 0;
|
||||
}
|
||||
.thumbnails>li {
|
||||
float: none;
|
||||
margin-left: 0;
|
||||
}
|
||||
[class*="span"],
|
||||
.uneditable-input[class*="span"],
|
||||
.row-fluid [class*="span"] {
|
||||
[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]
|
||||
{
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
|
@ -834,8 +769,7 @@
|
|||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.span12,
|
||||
.row-fluid .span12 {
|
||||
.span12,.row-fluid .span12 {
|
||||
width: 100%;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
|
@ -844,13 +778,8 @@
|
|||
.row-fluid [class*="offset"]:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
.input-large,
|
||||
.input-xlarge,
|
||||
.input-xxlarge,
|
||||
input[class*="span"],
|
||||
select[class*="span"],
|
||||
textarea[class*="span"],
|
||||
.uneditable-input {
|
||||
.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input
|
||||
{
|
||||
display: block;
|
||||
width: 100%;
|
||||
min-height: 30px;
|
||||
|
@ -858,10 +787,8 @@
|
|||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.input-prepend input,
|
||||
.input-append input,
|
||||
.input-prepend input[class*="span"],
|
||||
.input-append input[class*="span"] {
|
||||
.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]
|
||||
{
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
}
|
||||
|
@ -892,8 +819,7 @@
|
|||
display: block;
|
||||
line-height: 20px;
|
||||
}
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
input[type="checkbox"],input[type="radio"] {
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
.form-horizontal .control-label {
|
||||
|
@ -912,8 +838,7 @@
|
|||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.media .pull-left,
|
||||
.media .pull-right {
|
||||
.media .pull-left,.media .pull-right {
|
||||
display: block;
|
||||
float: none;
|
||||
margin-bottom: 10px;
|
||||
|
@ -940,8 +865,7 @@
|
|||
body {
|
||||
padding-top: 0;
|
||||
}
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
.navbar-fixed-top,.navbar-fixed-bottom {
|
||||
position: static;
|
||||
}
|
||||
.navbar-fixed-top {
|
||||
|
@ -950,8 +874,7 @@
|
|||
.navbar-fixed-bottom {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.navbar-fixed-top .navbar-inner,
|
||||
.navbar-fixed-bottom .navbar-inner {
|
||||
.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner {
|
||||
padding: 5px;
|
||||
}
|
||||
.navbar .container {
|
||||
|
@ -983,8 +906,7 @@
|
|||
color: #777777;
|
||||
text-shadow: none;
|
||||
}
|
||||
.nav-collapse .nav > li > a,
|
||||
.nav-collapse .dropdown-menu a {
|
||||
.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a {
|
||||
padding: 9px 15px;
|
||||
font-weight: bold;
|
||||
color: #777777;
|
||||
|
@ -1002,16 +924,15 @@
|
|||
.nav-collapse .dropdown-menu li+li a {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.nav-collapse .nav > li > a:hover,
|
||||
.nav-collapse .dropdown-menu a:hover {
|
||||
.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
.navbar-inverse .nav-collapse .nav > li > a,
|
||||
.navbar-inverse .nav-collapse .dropdown-menu a {
|
||||
.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a
|
||||
{
|
||||
color: #999999;
|
||||
}
|
||||
.navbar-inverse .nav-collapse .nav > li > a:hover,
|
||||
.navbar-inverse .nav-collapse .dropdown-menu a:hover {
|
||||
.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover
|
||||
{
|
||||
background-color: #111111;
|
||||
}
|
||||
.nav-collapse.in .btn-group {
|
||||
|
@ -1039,30 +960,31 @@
|
|||
.nav-collapse .open>.dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
.nav-collapse .dropdown-menu:before,
|
||||
.nav-collapse .dropdown-menu:after {
|
||||
.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after {
|
||||
display: none;
|
||||
}
|
||||
.nav-collapse .dropdown-menu .divider {
|
||||
display: none;
|
||||
}
|
||||
.nav-collapse .nav > li > .dropdown-menu:before,
|
||||
.nav-collapse .nav > li > .dropdown-menu:after {
|
||||
.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
.nav-collapse .navbar-form,
|
||||
.nav-collapse .navbar-search {
|
||||
.nav-collapse .navbar-form,.nav-collapse .navbar-search {
|
||||
float: none;
|
||||
padding: 10px 15px;
|
||||
margin: 10px 0;
|
||||
border-top: 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);
|
||||
-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);
|
||||
-webkit-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-search {
|
||||
.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search
|
||||
{
|
||||
border-top-color: #111111;
|
||||
border-bottom-color: #111111;
|
||||
}
|
||||
|
@ -1070,8 +992,7 @@
|
|||
float: none;
|
||||
margin-left: 0;
|
||||
}
|
||||
.nav-collapse,
|
||||
.nav-collapse.collapse {
|
||||
.nav-collapse,.nav-collapse.collapse {
|
||||
height: 0;
|
||||
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