Skip to content

Commit

Permalink
fixing registration and account form validation
Browse files Browse the repository at this point in the history
  • Loading branch information
Isakots committed Sep 21, 2020
1 parent 1f54021 commit fd9ae78
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 26 deletions.
24 changes: 15 additions & 9 deletions src/main/angular/src/app/account/profile/profile.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/form
import {AccountService} from '../../shared/service/account.service';
import {ActivatedRoute} from '@angular/router';
import {AccountModel} from '../../shared/domain/account-model';
import {requiredValidationConditionally} from "../../core/validator/required-validator";
import {UserNotificationService} from "../../shared/service/user-notification.service";

@Component({
selector: 'app-profile',
Expand All @@ -16,8 +18,9 @@ export class ProfileComponent implements OnInit {

constructor(
private accountService: AccountService,
protected activatedRoute: ActivatedRoute,
private formBuilder: FormBuilder
private activatedRoute: ActivatedRoute,
private formBuilder: FormBuilder,
private userNotificationService: UserNotificationService
) {
}

Expand All @@ -36,7 +39,7 @@ export class ProfileComponent implements OnInit {
email: [{value: '', disabled: true},
[Validators.required, Validators.minLength(5), Validators.maxLength(254), Validators.email]],
studentStatus: [false],
institution: ['', [this._customRequiredValidator]],
institution: ['', []],
faculty: [''],
collegian: [false],
roomNumber: [''],
Expand All @@ -45,7 +48,14 @@ export class ProfileComponent implements OnInit {
subOnSubscribedTrainings: [false]
};

this.profileForm = this.formBuilder.group(formGroupControlsConfig);
this.profileForm = this.formBuilder.group(formGroupControlsConfig,
{
validators: [
requiredValidationConditionally('studentStatus','institution'),
requiredValidationConditionally('studentStatus','faculty'),
requiredValidationConditionally('collegian','roomNumber')
]
});
}

updateForm(account: AccountModel) {
Expand Down Expand Up @@ -96,16 +106,12 @@ export class ProfileComponent implements OnInit {
response => {
if (response.status === 200) {
this.success = true;
this.userNotificationService.notifyUser("Mentés sikeres!", false);
}
}
);
}

private _customRequiredValidator() {
// TODO
return '';
}

showValidationMessage(formControl: AbstractControl) {
return (formControl.invalid && (formControl.dirty || formControl.touched)) || (formControl.invalid && this.triedToSave);
}
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/hu/isakots/martosgym/rest/auth/model/SignUpForm.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package hu.isakots.martosgym.rest.auth.model;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

public class SignUpForm implements Serializable {
private String email;
Expand All @@ -12,6 +14,7 @@ public class SignUpForm implements Serializable {
private String faculty;
private boolean isCollegian;
private int roomNumber;
private Set<String> subscriptions = new HashSet<>();

public String getEmail() {
return email;
Expand Down Expand Up @@ -84,4 +87,12 @@ public int getRoomNumber() {
public void setRoomNumber(int roomNumber) {
this.roomNumber = roomNumber;
}

public Set<String> getSubscriptions() {
return subscriptions;
}

public void setSubscriptions(Set<String> subscriptions) {
this.subscriptions = subscriptions;
}
}
19 changes: 2 additions & 17 deletions src/main/java/hu/isakots/martosgym/service/AccountService.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.util.stream.Collectors;

import static hu.isakots.martosgym.configuration.util.AuthoritiesConstants.ROLE_MEMBER;
import static hu.isakots.martosgym.service.util.ApplicationUtil.mapSubscriptions;
import static hu.isakots.martosgym.service.util.Constants.ALL;
import static hu.isakots.martosgym.service.util.Constants.MEMBERS_ONLY;

Expand Down Expand Up @@ -57,7 +58,7 @@ public User findById(Long id) throws ResourceNotFoundException {
public User updateUser(AccountModel accountModel) {
User storedUser = getAuthenticatedUserWithData();
modelMapper.map(accountModel, storedUser);
mapSubscriptions(accountModel, storedUser);
mapSubscriptions(accountModel.getSubscriptions(), storedUser);
return userRepository.save(storedUser);
}

Expand All @@ -82,22 +83,6 @@ public void changePassword(PasswordChangeDTO passwordChangeDto) throws InvalidPa
userRepository.save(user);
}

private void mapSubscriptions(AccountModel accountModel, User storedUser) {
storedUser.setSubscriptions(
accountModel.getSubscriptions().stream()
.map(subscriptionName -> {
Subscription subscription = new Subscription();
try {
subscription.setName(SubscriptionType.valueOf(subscriptionName));
} catch (IllegalArgumentException | NullPointerException exception) {
throw new UnsupportedOperationException("Invalid subscriptionType");
}
return subscription;
})
.collect(Collectors.toSet())
);
}

public List<String> extractUserEmails(String mailToCode) {
if (ALL.equals(mailToCode)) {
return userRepository.findAll()
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/hu/isakots/martosgym/service/AuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.springframework.stereotype.Service;

import static hu.isakots.martosgym.configuration.util.AuthoritiesConstants.ROLE_USER;
import static hu.isakots.martosgym.service.util.ApplicationUtil.mapSubscriptions;

@Service
public class AuthService {
Expand Down Expand Up @@ -52,6 +53,8 @@ public void registerUser(SignUpForm form) {
authority.setName(ROLE_USER);
user.getAuthorities().add(authority);

mapSubscriptions(form.getSubscriptions(), user);

accountService.saveAccount(user);
mailService.sendRegistrationEmail(user);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package hu.isakots.martosgym.service.util;

import hu.isakots.martosgym.domain.Subscription;
import hu.isakots.martosgym.domain.User;
import hu.isakots.martosgym.service.model.SubscriptionType;

import java.util.Set;
import java.util.stream.Collectors;

/**
* Utility class for application logic
*/
public final class ApplicationUtil {

private ApplicationUtil() {
// utility class
}

public static void mapSubscriptions(Set<String> subscriptionList, User storedUser) {
storedUser.setSubscriptions(
subscriptionList.stream()
.map(subscriptionName -> {
Subscription subscription = new Subscription();
try {
subscription.setName(SubscriptionType.valueOf(subscriptionName));
} catch (IllegalArgumentException | NullPointerException exception) {
throw new UnsupportedOperationException("Invalid subscriptionType");
}
return subscription;
})
.collect(Collectors.toSet())
);
}
}

0 comments on commit fd9ae78

Please sign in to comment.