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.");
}
}
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);
}
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);
}
}
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;
}
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;
}
Aggregations