Skip to content

Commit

Permalink
Merge branch 'develop' into feature/orgs
Browse files Browse the repository at this point in the history
# Conflicts:
#	project-properties.gradle
#	src/main/java/com/epam/ta/reportportal/commons/ReportPortalUser.java
#	src/main/java/com/epam/ta/reportportal/dao/UserRepositoryCustomImpl.java
#	src/main/java/com/epam/ta/reportportal/dao/util/ResultFetchers.java
#	src/main/java/com/epam/ta/reportportal/entity/user/User.java
#	src/main/java/com/epam/ta/reportportal/jooq/tables/JOnboarding.java
#	src/main/java/com/epam/ta/reportportal/jooq/tables/JProject.java
#	src/main/java/com/epam/ta/reportportal/jooq/tables/JUserCreationBid.java
#	src/main/java/com/epam/ta/reportportal/jooq/tables/JUsers.java
#	src/main/java/com/epam/ta/reportportal/jooq/tables/records/JUserCreationBidRecord.java
#	src/main/java/com/epam/ta/reportportal/jooq/tables/records/JUsersRecord.java
#	src/test/java/com/epam/ta/reportportal/dao/UserRepositoryTest.java
  • Loading branch information
grabsefx committed Sep 17, 2024
2 parents d4f1c47 + ee8ed26 commit 4454bd6
Show file tree
Hide file tree
Showing 14 changed files with 151 additions and 39 deletions.
1 change: 1 addition & 0 deletions project-properties.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ project.ext {
(migrationsUrl + '/migrations/86_add_retention_policy_launch.up.sql') : 'V086__add_retention_policy_launch.sql',
(migrationsUrl + '/migrations/87_add_group_enum_value.up.sql') : 'V087__add_group_enum_value.sql',
(migrationsUrl + '/migrations/88_analytics_data_table.up.sql') : 'V088__analytics_data_table.sql',
(migrationsUrl + '/migrations/90_add_user_fields.up.sql') : 'V090__scim_user_fields.sql',
(migrationsUrl + '/migrations/198_add_slugify_function.up.sql') : 'V198__add_slugify_function.sql',
(migrationsUrl + '/migrations/199_organization_tables.up.sql') : 'V199__organization_tables.sql',
(migrationsUrl + '/migrations/200_migrate_org_roles.up.sql') : 'V200__migrate_org_roles.sql',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;

/**
* ReportPortal user representation
Expand All @@ -52,6 +56,8 @@
@EqualsAndHashCode(callSuper = false)
public class ReportPortalUser extends User {

private boolean active;

private Long userId;
private UserRole userRole;
private String email;
Expand All @@ -60,12 +66,13 @@ public class ReportPortalUser extends User {

private ReportPortalUser(String username, String password,
Collection<? extends GrantedAuthority> authorities, Long userId,
UserRole role, Map<String, OrganizationDetails> organizationDetails, String email) {
UserRole role, Map<String, OrganizationDetails> organizationDetails, String email, boolean isActive) {
super(username, password, authorities);
this.userId = userId;
this.userRole = role;
this.organizationDetails = organizationDetails;
this.email = email;
this.active = isActive;
}

public static ReportPortalUserBuilder userBuilder() {
Expand All @@ -88,6 +95,19 @@ public static class OrganizationDetails implements Serializable {
private OrganizationRole orgRole;

private Map<String, ProjectDetails> projectDetails;
@Override
public boolean isEnabled() {
return active;
}

@Override
public boolean isAccountNonLocked() {
return active;
}

public Long getUserId() {
return userId;
}

public static OrganizationDetailsBuilder builder() {
return new OrganizationDetailsBuilder();
Expand Down Expand Up @@ -203,6 +223,7 @@ public ProjectDetails build() {

public static class ReportPortalUserBuilder {

private boolean active;
private String username;
private String password;
private Long userId;
Expand All @@ -214,6 +235,11 @@ public static class ReportPortalUserBuilder {
private ReportPortalUserBuilder() {
}

public ReportPortalUserBuilder withActive(boolean active) {
this.active = active;
return this;
}

public ReportPortalUserBuilder withUserName(String userName) {
this.username = userName;
return this;
Expand All @@ -234,6 +260,7 @@ public ReportPortalUserBuilder withUserDetails(UserDetails userDetails) {
this.username = userDetails.getUsername();
this.password = userDetails.getPassword();
this.authorities = userDetails.getAuthorities();
this.active = userDetails.isEnabled();
return this;
}

Expand All @@ -258,6 +285,7 @@ public ReportPortalUserBuilder withOrganizationDetails(Map<String, OrganizationD
}

public ReportPortalUser fromUser(com.epam.ta.reportportal.entity.user.User user) {
this.active = user.isActive();
this.username = user.getLogin();
this.email = user.getPassword();
this.userId = user.getId();
Expand Down Expand Up @@ -292,7 +320,7 @@ private Map<String, ProjectDetails> mapProjectDetails (Set<ProjectUser> projects

public ReportPortalUser build() {
return new ReportPortalUser(username, password, authorities, userId, userRole,
organizationDetails, email);
organizationDetails, email, active);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,10 @@
import static com.epam.ta.reportportal.commons.querygen.constant.TestItemCriteriaConstant.CRITERIA_UNIQUE_ID;
import static com.epam.ta.reportportal.commons.querygen.constant.TestItemCriteriaConstant.CRITERIA_UUID;
import static com.epam.ta.reportportal.commons.querygen.constant.TestItemCriteriaConstant.RETRY_PARENT;
import static com.epam.ta.reportportal.commons.querygen.constant.UserCriteriaConstant.CRITERIA_ACTIVE;
import static com.epam.ta.reportportal.commons.querygen.constant.UserCriteriaConstant.CRITERIA_EMAIL;
import static com.epam.ta.reportportal.commons.querygen.constant.UserCriteriaConstant.CRITERIA_EXPIRED;
import static com.epam.ta.reportportal.commons.querygen.constant.UserCriteriaConstant.CRITERIA_EXTERNAL_ID;
import static com.epam.ta.reportportal.commons.querygen.constant.UserCriteriaConstant.CRITERIA_FULL_NAME;
import static com.epam.ta.reportportal.commons.querygen.constant.UserCriteriaConstant.CRITERIA_LAST_LOGIN;
import static com.epam.ta.reportportal.commons.querygen.constant.UserCriteriaConstant.CRITERIA_ROLE;
Expand Down Expand Up @@ -184,6 +186,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
import org.jooq.Field;
import org.jooq.JoinType;
Expand Down Expand Up @@ -372,6 +375,11 @@ protected Field<Long> idField() {
USER_TARGET(User.class, Arrays.asList(

new CriteriaHolderBuilder().newBuilder(CRITERIA_ID, USERS.ID, Long.class).get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_UUID, USERS.UUID, UUID.class).get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_EXTERNAL_ID, USERS.EXTERNAL_ID, String.class)
.get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_ACTIVE, USERS.ACTIVE, Boolean.class)
.get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_USER, USERS.LOGIN, String.class).get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_EMAIL, USERS.EMAIL, String.class).get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_FULL_NAME, USERS.FULL_NAME, String.class)
Expand Down Expand Up @@ -403,6 +411,9 @@ protected Field<Long> idField() {
protected Collection<? extends SelectField> selectFields() {
return Lists.newArrayList(USERS.ID,
USERS.LOGIN,
USERS.UUID,
USERS.EXTERNAL_ID,
USERS.ACTIVE,
USERS.FULL_NAME,
USERS.TYPE,
USERS.ATTACHMENT,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
public final class GeneralCriteriaConstant {

public static final String CRITERIA_ID = "id";

public static final String CRITERIA_UUID = "uuid";
public static final String CRITERIA_NAME = "name";
public static final String CRITERIA_SHARED = "shared";
public static final String CRITERIA_OWNER = "owner";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
*/
public final class UserCriteriaConstant {

public static final String CRITERIA_EXTERNAL_ID = "externalId";

public static final String CRITERIA_ACTIVE = "active";

public static final String CRITERIA_USER = "user";
public static final String CRITERIA_ROLE = "role";
public static final String CRITERIA_TYPE = "type";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public Optional<ReportPortalUser> findUserDetails(String login) {
USERS.LOGIN,
USERS.PASSWORD,
USERS.ROLE,
USERS.EMAIL,
USERS.EMAIL, USERS.ACTIVE,
PROJECT_USER.PROJECT_ID,
PROJECT_USER.PROJECT_ROLE,
PROJECT.NAME,
Expand All @@ -151,15 +151,15 @@ public Optional<ReportPortalUser> findUserDetails(String login) {

@Override
public Optional<ReportPortalUser> findReportPortalUser(String login) {
return dsl.select(USERS.ID, USERS.LOGIN, USERS.PASSWORD, USERS.ROLE, USERS.EMAIL)
return dsl.select(USERS.ID, USERS.LOGIN, USERS.PASSWORD, USERS.ROLE, USERS.EMAIL, USERS.ACTIVE)
.from(USERS)
.where(USERS.LOGIN.eq(login))
.fetchOptional(REPORT_PORTAL_USER_MAPPER);
}

@Override
public Optional<ReportPortalUser> findReportPortalUser(Long userId) {
return dsl.select(USERS.ID, USERS.LOGIN, USERS.PASSWORD, USERS.ROLE, USERS.EMAIL)
return dsl.select(USERS.ID, USERS.LOGIN, USERS.PASSWORD, USERS.ROLE, USERS.EMAIL, USERS.ACTIVE)
.from(USERS)
.where(USERS.ID.eq(userId))
.fetchOptional(REPORT_PORTAL_USER_MAPPER);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,7 @@ public class RecordMappers {
};

public static final RecordMapper<Record, ReportPortalUser> REPORT_PORTAL_USER_MAPPER = r -> ReportPortalUser.userBuilder()
.withActive(r.get(USERS.ACTIVE))
.withUserName(r.get(USERS.LOGIN))
.withPassword(ofNullable(r.get(USERS.PASSWORD)).orElse(""))
.withAuthorities(Collections.emptyList())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,7 @@ private ResultFetchers() {
if (!CollectionUtils.isEmpty(rows)) {
ReportPortalUser user = ReportPortalUser.userBuilder()
.withUserName(rows.get(0).get(USERS.LOGIN))
.withActive(records.get(0).get(USERS.ACTIVE))
.withPassword(ofNullable(rows.get(0).get(USERS.PASSWORD)).orElse(""))
.withAuthorities(Collections.emptyList())
.withUserId(rows.get(0).get(USERS.ID))
Expand Down
28 changes: 17 additions & 11 deletions src/main/java/com/epam/ta/reportportal/entity/user/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.time.Instant;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
Expand All @@ -44,6 +45,9 @@
/**
* @author Andrei Varabyeu
*/
@Getter
@Setter
@NoArgsConstructor
@Entity
@TypeDef(name = "meta", typeClass = Metadata.class)
@Table(name = "users", schema = "public")
Expand All @@ -59,6 +63,15 @@ public class User implements Serializable {
@Column(name = "id", unique = true, nullable = false, precision = 64)
private Long id;

@Column(name = "uuid")
private UUID uuid;

@Column(name = "external_id")
private String externalId;

@Column(name = "active")
private boolean active;

@Column(name = "login")
private String login;

Expand Down Expand Up @@ -117,22 +130,15 @@ public boolean equals(Object o) {
return false;
}
User user = (User) o;
return isExpired == user.isExpired
&& Objects.equals(id, user.id)
return Objects.equals(id, user.id)
&& Objects.equals(uuid, user.uuid)
&& Objects.equals(login, user.login)
&& Objects.equals(password, user.password)
&& Objects.equals(email, user.email)
&& role == user.role
&& Objects.equals(fullName, user.fullName)
&& Objects.equals(metadata, user.metadata)
&& Objects.equals(attachment, user.attachment)
&& Objects.equals(attachmentThumbnail, user.attachmentThumbnail)
&& userType == user.userType;
;
}

@Override
public int hashCode() {
return Objects.hash(id, login, password, email, role, fullName, isExpired, metadata, attachment,
attachmentThumbnail, userType);
return Objects.hash(id, uuid, login, email);
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 20 additions & 4 deletions src/main/java/com/epam/ta/reportportal/jooq/tables/JUsers.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 4454bd6

Please sign in to comment.