
uk.co.caeldev.springsecuritymongo.repositories.MongoClientDetailsRepositoryImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spring-security-mongo Show documentation
Show all versions of spring-security-mongo Show documentation
A Commons Library to provide the repositories for mongo db
package uk.co.caeldev.springsecuritymongo.repositories;
import com.mongodb.WriteResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import uk.co.caeldev.springsecuritymongo.domain.MongoClientDetails;
@Component
public class MongoClientDetailsRepositoryImpl implements MongoClientDetailsRepositoryBase {
public static final String ID = "_id";
public static final String CLIENT_SECRET = "clientSecret";
private final MongoTemplate mongoTemplate;
@Autowired
public MongoClientDetailsRepositoryImpl(final MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public boolean deleteByClientId(String clientId) {
final Query query = Query.query(Criteria.where(ID).is(clientId));
final WriteResult writeResult = mongoTemplate.remove(query, MongoClientDetails.class);
return writeResult.getN() == 1;
}
@Override
public boolean update(final MongoClientDetails mongoClientDetails) {
final Query query = Query.query(Criteria.where(ID).is(mongoClientDetails.getClientId()));
final Update update = Update.update("scope", mongoClientDetails.getScope())
.set("resourceIds", mongoClientDetails.getResourceIds())
.set("authorizedGrantTypes", mongoClientDetails.getAuthorizedGrantTypes())
.set("authorities", mongoClientDetails.getAuthorities())
.set("accessTokenValiditySeconds", mongoClientDetails.getAccessTokenValiditySeconds())
.set("refreshTokenValiditySeconds", mongoClientDetails.getRefreshTokenValiditySeconds())
.set("additionalInformation", mongoClientDetails.getAdditionalInformation())
.set("autoApproveScopes", mongoClientDetails.getAutoApproveScopes())
.set("registeredRedirectUris", mongoClientDetails.getRegisteredRedirectUri());
final WriteResult writeResult = mongoTemplate.updateFirst(query, update, MongoClientDetails.class);
return writeResult.getN() == 1;
}
@Override
public boolean updateClientSecret(final String clientId,
final String newSecret) {
final Query query = Query.query(Criteria.where(ID).is(clientId));
final Update update = Update.update(CLIENT_SECRET, newSecret);
final WriteResult writeResult = mongoTemplate.updateFirst(query, update, MongoClientDetails.class);
return writeResult.getN() == 1;
}
@Override
public MongoClientDetails findByClientId(final String clientId) throws IllegalArgumentException {
final Query query = Query.query(Criteria.where(ID).is(clientId));
final MongoClientDetails mongoClientDetails = mongoTemplate.findOne(query, MongoClientDetails.class);
if (mongoClientDetails == null) {
throw new IllegalArgumentException("No valid client id");
}
return mongoClientDetails;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy