Search in sources :

Example 11 with RunAsSystem

use of org.molgenis.security.core.runas.RunAsSystem in project molgenis by molgenis.

the class AccountServiceImpl method resetPassword.

@Override
@RunAsSystem
public void resetPassword(String userEmail) {
    User user = dataService.query(USER, User.class).eq(EMAIL, userEmail).findOne();
    if (user != null) {
        String newPassword = idGenerator.generateId(SHORT_SECURE_RANDOM);
        user.setPassword(newPassword);
        user.setChangePassword(true);
        dataService.update(USER, user);
        // send password reseted email to user
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setTo(user.getEmail());
        mailMessage.setSubject("Your new password request");
        mailMessage.setText(createPasswordResettedEmailText(newPassword));
        mailSender.send(mailMessage);
    } else {
        throw new MolgenisUserException("Invalid email address.");
    }
}
Also used : User(org.molgenis.data.security.auth.User) SimpleMailMessage(org.springframework.mail.SimpleMailMessage) MolgenisUserException(org.molgenis.security.user.MolgenisUserException) RunAsSystem(org.molgenis.security.core.runas.RunAsSystem)

Example 12 with RunAsSystem

use of org.molgenis.security.core.runas.RunAsSystem in project molgenis by molgenis.

the class UsersGroupsPopulatorImpl method populate.

@Override
@Transactional
@RunAsSystem
public void populate() {
    if (adminPassword == null) {
        throw new RuntimeException("please configure the admin.password property in your molgenis-server.properties");
    }
    // create admin user
    User userAdmin = userFactory.create();
    userAdmin.setUsername(USERNAME_ADMIN);
    userAdmin.setPassword(adminPassword);
    userAdmin.setEmail(adminEmail);
    userAdmin.setActive(true);
    userAdmin.setSuperuser(true);
    userAdmin.setChangePassword(false);
    // create anonymous user
    User anonymousUser = userFactory.create();
    anonymousUser.setUsername(ANONYMOUS_USERNAME);
    anonymousUser.setPassword(ANONYMOUS_USERNAME);
    anonymousUser.setEmail(anonymousEmail);
    anonymousUser.setActive(true);
    anonymousUser.setSuperuser(false);
    anonymousUser.setChangePassword(false);
    // create all users group
    Group allUsersGroup = groupFactory.create();
    allUsersGroup.setName(AccountService.ALL_USER_GROUP);
    // persist entities
    dataService.add(USER, Stream.of(userAdmin, anonymousUser));
    dataService.add(GROUP, allUsersGroup);
}
Also used : Group(org.molgenis.data.security.auth.Group) User(org.molgenis.data.security.auth.User) RunAsSystem(org.molgenis.security.core.runas.RunAsSystem) Transactional(org.springframework.transaction.annotation.Transactional)

Example 13 with RunAsSystem

use of org.molgenis.security.core.runas.RunAsSystem in project molgenis by molgenis.

the class IndexJobSchedulerImpl method scheduleIndexJob.

@Override
@RunAsSystem
public void scheduleIndexJob(String transactionId) {
    LOG.trace("Index transaction with id {}...", transactionId);
    IndexActionGroup indexActionGroup = dataService.findOneById(INDEX_ACTION_GROUP, transactionId, IndexActionGroup.class);
    if (indexActionGroup != null) {
        Stream<Entity> indexActions = dataService.findAll(INDEX_ACTION, new QueryImpl<>().eq(INDEX_ACTION_GROUP_ATTR, indexActionGroup));
        Map<String, Long> numberOfActionsPerEntity = indexActions.collect(groupingBy(indexAction -> indexAction.getString(ENTITY_TYPE_ID), counting()));
        indexStatus.addActionCounts(numberOfActionsPerEntity);
        IndexJobExecution indexJobExecution = indexJobExecutionFactory.create();
        indexJobExecution.setUser("admin");
        indexJobExecution.setIndexActionJobID(transactionId);
        jobExecutor.submit(indexJobExecution, executorService).whenComplete((a, b) -> indexStatus.removeActionCounts(numberOfActionsPerEntity));
    } else {
        LOG.debug("No index job found for id [{}].", transactionId);
    }
}
Also used : JobExecutor(org.molgenis.jobs.JobExecutor) STATUS(org.molgenis.jobs.model.JobExecutionMetaData.STATUS) LoggerFactory(org.slf4j.LoggerFactory) Collectors.counting(java.util.stream.Collectors.counting) Collectors.groupingBy(java.util.stream.Collectors.groupingBy) RunAsSystemAspect.runAsSystem(org.molgenis.security.core.runas.RunAsSystemAspect.runAsSystem) QueryImpl(org.molgenis.data.support.QueryImpl) Scheduled(org.springframework.scheduling.annotation.Scheduled) RunAsSystem(org.molgenis.security.core.runas.RunAsSystem) SUCCESS(org.molgenis.jobs.model.JobExecution.Status.SUCCESS) Map(java.util.Map) Objects.requireNonNull(java.util.Objects.requireNonNull) ExecutorService(java.util.concurrent.ExecutorService) IndexActionGroup(org.molgenis.data.index.meta.IndexActionGroup) Logger(org.slf4j.Logger) INDEX_ACTION_GROUP(org.molgenis.data.index.meta.IndexActionGroupMetaData.INDEX_ACTION_GROUP) END_DATE(org.molgenis.jobs.model.JobExecutionMetaData.END_DATE) IndexActionMetaData(org.molgenis.data.index.meta.IndexActionMetaData) Instant(java.time.Instant) EntityType(org.molgenis.data.meta.model.EntityType) Executors(java.util.concurrent.Executors) ChronoUnit(java.time.temporal.ChronoUnit) Stream(java.util.stream.Stream) DataService(org.molgenis.data.DataService) Entity(org.molgenis.data.Entity) IndexActionGroup(org.molgenis.data.index.meta.IndexActionGroup) Entity(org.molgenis.data.Entity) QueryImpl(org.molgenis.data.support.QueryImpl) RunAsSystem(org.molgenis.security.core.runas.RunAsSystem)

Example 14 with RunAsSystem

use of org.molgenis.security.core.runas.RunAsSystem in project molgenis by molgenis.

the class UntypedTagService method getTagsForPackage.

@Override
@RunAsSystem
public Iterable<SemanticTag<Package, LabeledResource, LabeledResource>> getTagsForPackage(Package p) {
    Entity packageEntity = dataService.findOne(PACKAGE, new QueryImpl<>().eq(PackageMetadata.ID, p.getId()));
    if (packageEntity == null) {
        throw new UnknownEntityException("Unknown package [" + p.getId() + "]");
    }
    List<SemanticTag<Package, LabeledResource, LabeledResource>> tags = Lists.newArrayList();
    for (Entity tagEntity : packageEntity.getEntities(PackageMetadata.TAGS)) {
        tags.add(SemanticTag.asTag(p, tagEntity));
    }
    return tags;
}
Also used : Entity(org.molgenis.data.Entity) QueryImpl(org.molgenis.data.support.QueryImpl) UnknownEntityException(org.molgenis.data.UnknownEntityException) SemanticTag(org.molgenis.data.semantic.SemanticTag) RunAsSystem(org.molgenis.security.core.runas.RunAsSystem)

Example 15 with RunAsSystem

use of org.molgenis.security.core.runas.RunAsSystem in project molgenis by molgenis.

the class UntypedTagService method getTagsForAttribute.

@Override
@RunAsSystem
public Multimap<Relation, LabeledResource> getTagsForAttribute(EntityType entityType, Attribute attribute) {
    Entity entity = findAttributeEntity(entityType, attribute.getName());
    if (entity == null)
        return ArrayListMultimap.create();
    Multimap<Relation, LabeledResource> tags = ArrayListMultimap.create();
    for (Entity tagEntity : entity.getEntities(AttributeMetadata.TAGS)) {
        SemanticTag<Attribute, LabeledResource, LabeledResource> tag = SemanticTag.asTag(attribute, tagEntity);
        tags.put(tag.getRelation(), tag.getObject());
    }
    return tags;
}
Also used : Entity(org.molgenis.data.Entity) Relation(org.molgenis.data.semantic.Relation) LabeledResource(org.molgenis.data.semantic.LabeledResource) RunAsSystem(org.molgenis.security.core.runas.RunAsSystem)

Aggregations

RunAsSystem (org.molgenis.security.core.runas.RunAsSystem)29 Entity (org.molgenis.data.Entity)12 Transactional (org.springframework.transaction.annotation.Transactional)7 User (org.molgenis.data.security.auth.User)5 QueryImpl (org.molgenis.data.support.QueryImpl)4 UnknownEntityException (org.molgenis.data.UnknownEntityException)3 MolgenisUserException (org.molgenis.security.user.MolgenisUserException)3 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Objects.requireNonNull (java.util.Objects.requireNonNull)2 Stream (java.util.stream.Stream)2 DataService (org.molgenis.data.DataService)2 Fetch (org.molgenis.data.Fetch)2 IndexActionGroup (org.molgenis.data.index.meta.IndexActionGroup)2 INDEX_ACTION_GROUP (org.molgenis.data.index.meta.IndexActionGroupMetaData.INDEX_ACTION_GROUP)2 Token (org.molgenis.data.security.auth.Token)2 ProgressImpl (org.molgenis.jobs.ProgressImpl)2 SimpleMailMessage (org.springframework.mail.SimpleMailMessage)2 RunAsUserToken (org.springframework.security.access.intercept.RunAsUserToken)2