Search in sources :

Example 11 with User

use of com.bakdata.conquery.models.auth.entities.User in project conquery by bakdata.

the class FullExportForm method createSubQueries.

@Override
public Map<String, List<ManagedQuery>> createSubQueries(DatasetRegistry datasets, User user, Dataset submittedDataset) {
    // Forms are sent as an array of standard queries containing AND/OR of CQConcepts, we ignore everything and just convert the CQConcepts into CQUnfiltered for export.
    final List<CQUnfilteredTable> unfilteredTables = tables.stream().flatMap(Visitable::stream).filter(CQConcept.class::isInstance).map(CQConcept.class::cast).flatMap(concept -> concept.getTables().stream()).map(table -> new CQUnfilteredTable(table.getConnector(), table.getDateColumn())).collect(Collectors.toList());
    final TableExportQuery exportQuery = new TableExportQuery(queryGroup.getQuery());
    exportQuery.setDateRange(getDateRange());
    exportQuery.setTables(unfilteredTables);
    final ManagedQuery managedQuery = new ManagedQuery(exportQuery, user, submittedDataset);
    return Map.of(ConqueryConstants.SINGLE_RESULT_TABLE_NAME, List.of(managedQuery));
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) Setter(lombok.Setter) ManagedQuery(com.bakdata.conquery.models.query.ManagedQuery) CQUnfilteredTable(com.bakdata.conquery.apiv1.query.concept.filter.CQUnfilteredTable) ManagedForm(com.bakdata.conquery.models.forms.managed.ManagedForm) Getter(lombok.Getter) ManagedInternalForm(com.bakdata.conquery.models.forms.managed.ManagedInternalForm) NotEmpty(javax.validation.constraints.NotEmpty) Valid(javax.validation.Valid) ManagedExecutionId(com.bakdata.conquery.models.identifiable.ids.specific.ManagedExecutionId) ManagedExecution(com.bakdata.conquery.models.execution.ManagedExecution) ImmutableList(com.google.common.collect.ImmutableList) Map(java.util.Map) JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) I18n(com.bakdata.conquery.models.i18n.I18n) QueryDescription(com.bakdata.conquery.apiv1.query.QueryDescription) ConqueryConstants(com.bakdata.conquery.ConqueryConstants) Nullable(javax.annotation.Nullable) Range(com.bakdata.conquery.models.common.Range) CPSType(com.bakdata.conquery.io.cps.CPSType) Visitable(com.bakdata.conquery.models.query.Visitable) Set(java.util.Set) Form(com.bakdata.conquery.apiv1.forms.Form) NotNull(javax.validation.constraints.NotNull) User(com.bakdata.conquery.models.auth.entities.User) Collectors(java.util.stream.Collectors) ExportFormC10n(com.bakdata.conquery.internationalization.ExportFormC10n) Dataset(com.bakdata.conquery.models.datasets.Dataset) Consumer(java.util.function.Consumer) List(java.util.List) TableExportQuery(com.bakdata.conquery.apiv1.query.TableExportQuery) C10N(c10n.C10N) QueryResolveContext(com.bakdata.conquery.models.query.QueryResolveContext) LocalDate(java.time.LocalDate) DatasetRegistry(com.bakdata.conquery.models.worker.DatasetRegistry) CQElement(com.bakdata.conquery.apiv1.query.CQElement) CQConcept(com.bakdata.conquery.apiv1.query.concept.specific.CQConcept) Collections(java.util.Collections) CQUnfilteredTable(com.bakdata.conquery.apiv1.query.concept.filter.CQUnfilteredTable) CQConcept(com.bakdata.conquery.apiv1.query.concept.specific.CQConcept) TableExportQuery(com.bakdata.conquery.apiv1.query.TableExportQuery) ManagedQuery(com.bakdata.conquery.models.query.ManagedQuery)

Example 12 with User

use of com.bakdata.conquery.models.auth.entities.User in project conquery by bakdata.

the class ActiveUsersFilter method filter.

@Override
public void filter(ContainerRequestContext requestContext) {
    final Principal userPrincipal = requestContext.getSecurityContext().getUserPrincipal();
    if (!(userPrincipal instanceof User)) {
        return;
    }
    final User user = (User) userPrincipal;
    final Optional<Group> groupOptional = AuthorizationHelper.getPrimaryGroup(user, storage);
    if (groupOptional.isEmpty()) {
        log.trace("{} has no primary group", user);
        return;
    }
    final Group group = groupOptional.get();
    activeUsers.put(group, user, LocalDateTime.now());
    final String metricName = MetricRegistry.name(USERS, group.getName(), ACTIVE);
    // This does not register multiple gauges, but reuses them under the hood.
    SharedMetricRegistries.getDefault().gauge(metricName, () -> activeUsersGauge(group));
}
Also used : Group(com.bakdata.conquery.models.auth.entities.Group) User(com.bakdata.conquery.models.auth.entities.User) Principal(java.security.Principal)

Example 13 with User

use of com.bakdata.conquery.models.auth.entities.User in project conquery by bakdata.

the class UserAuthenticationManagementProcessor method tryRegister.

public boolean tryRegister(ProtoUser pUser) {
    final UserId id = pUser.createId();
    User user = storage.getUser(id);
    if (user == null) {
        log.warn("Unable to add new user {}. Probably already existed.", pUser);
        return false;
    }
    log.trace("Added the user {} to the authorization storage", id);
    if (AuthorizationHelper.registerForAuthentication(realm, user, pUser.getCredentials(), false)) {
        log.trace("Added the user {} to the realm {}", id, realm.getName());
        return true;
    }
    log.trace("Failed to add added the user {} to the realm {}", id, realm.getName());
    return false;
}
Also used : ProtoUser(com.bakdata.conquery.apiv1.auth.ProtoUser) User(com.bakdata.conquery.models.auth.entities.User) UserId(com.bakdata.conquery.models.identifiable.ids.specific.UserId)

Example 14 with User

use of com.bakdata.conquery.models.auth.entities.User in project conquery by bakdata.

the class IntrospectionDelegatingRealm method doGetAuthenticationInfo.

@Override
@SneakyThrows
public ConqueryAuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
    if (!(TOKEN_CLASS.isAssignableFrom(token.getClass()))) {
        log.trace("Incompatible token. Expected {}, got {}", TOKEN_CLASS, token.getClass());
        return null;
    }
    log.trace("Token has expected format!");
    TokenIntrospectionSuccessResponse successResponse = tokenCache.get((BearerToken) token);
    log.trace("Got an successful token introspection response.");
    UserId userId = extractId(successResponse);
    User user = getUserOrThrowUnknownAccount(storage, userId);
    return new ConqueryAuthenticationInfo(user, token, this, true);
}
Also used : User(com.bakdata.conquery.models.auth.entities.User) UserId(com.bakdata.conquery.models.identifiable.ids.specific.UserId) ConqueryAuthenticationInfo(com.bakdata.conquery.models.auth.ConqueryAuthenticationInfo) TokenIntrospectionSuccessResponse(com.nimbusds.oauth2.sdk.TokenIntrospectionSuccessResponse) SneakyThrows(lombok.SneakyThrows)

Example 15 with User

use of com.bakdata.conquery.models.auth.entities.User in project conquery by bakdata.

the class ConqueryTokenRealm method doGetAuthenticationInfo.

@Override
public ConqueryAuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
    if (!(TOKEN_CLASS.isAssignableFrom(token.getClass()))) {
        log.trace("Incompatible token. Expected {}, got {}", TOKEN_CLASS, token.getClass());
        return null;
    }
    log.trace("Token has expected format: {}\tWas: {} ", TOKEN_CLASS, token.getClass());
    DecodedJWT decodedToken = null;
    try {
        decodedToken = jwtConfig.getTokenVerifier(this).verify((String) token.getCredentials());
    } catch (TokenExpiredException e) {
        log.trace("The provided token is expired.");
        throw new ExpiredCredentialsException(e);
    } catch (SignatureVerificationException | InvalidClaimException e) {
        log.trace("The provided token was not successfully verified against its signature or claims.");
        throw new IncorrectCredentialsException(e);
    } catch (JWTVerificationException e) {
        log.trace("The provided token could not be verified.", e);
        throw new AuthenticationException(e);
    } catch (Exception e) {
        log.trace("Unable to decode token", e);
        throw new AuthenticationException(e);
    }
    log.trace("Received valid token.");
    String username = decodedToken.getSubject();
    UserId userId = UserId.Parser.INSTANCE.parse(username);
    final User user = getUserOrThrowUnknownAccount(storage, userId);
    return new ConqueryAuthenticationInfo(user, token, this, true);
}
Also used : User(com.bakdata.conquery.models.auth.entities.User) InvalidClaimException(com.auth0.jwt.exceptions.InvalidClaimException) TokenExpiredException(com.auth0.jwt.exceptions.TokenExpiredException) InvalidClaimException(com.auth0.jwt.exceptions.InvalidClaimException) SignatureVerificationException(com.auth0.jwt.exceptions.SignatureVerificationException) JWTVerificationException(com.auth0.jwt.exceptions.JWTVerificationException) JWTVerificationException(com.auth0.jwt.exceptions.JWTVerificationException) TokenExpiredException(com.auth0.jwt.exceptions.TokenExpiredException) UserId(com.bakdata.conquery.models.identifiable.ids.specific.UserId) ConqueryAuthenticationInfo(com.bakdata.conquery.models.auth.ConqueryAuthenticationInfo) SignatureVerificationException(com.auth0.jwt.exceptions.SignatureVerificationException) DecodedJWT(com.auth0.jwt.interfaces.DecodedJWT)

Aggregations

User (com.bakdata.conquery.models.auth.entities.User)49 Test (org.junit.jupiter.api.Test)17 MetaStorage (com.bakdata.conquery.io.storage.MetaStorage)14 ManagedQuery (com.bakdata.conquery.models.query.ManagedQuery)14 Dataset (com.bakdata.conquery.models.datasets.Dataset)11 UserId (com.bakdata.conquery.models.identifiable.ids.specific.UserId)10 Group (com.bakdata.conquery.models.auth.entities.Group)8 Role (com.bakdata.conquery.models.auth.entities.Role)8 DatasetId (com.bakdata.conquery.models.identifiable.ids.specific.DatasetId)8 ManagedExecutionId (com.bakdata.conquery.models.identifiable.ids.specific.ManagedExecutionId)7 ConceptQuery (com.bakdata.conquery.apiv1.query.ConceptQuery)5 QueryDescription (com.bakdata.conquery.apiv1.query.QueryDescription)5 ConqueryAuthenticationInfo (com.bakdata.conquery.models.auth.ConqueryAuthenticationInfo)5 CentralRegistry (com.bakdata.conquery.models.identifiable.CentralRegistry)5 BeforeEach (org.junit.jupiter.api.BeforeEach)5 ConqueryPermission (com.bakdata.conquery.models.auth.permissions.ConqueryPermission)4 NonPersistentStoreFactory (com.bakdata.conquery.util.NonPersistentStoreFactory)4 Slf4j (lombok.extern.slf4j.Slf4j)4 Query (com.bakdata.conquery.apiv1.query.Query)3 CQReusedQuery (com.bakdata.conquery.apiv1.query.concept.specific.CQReusedQuery)3