Update user register to distinguish admin and user authorities
This commit is contained in:
		
							parent
							
								
									57d492d21f
								
							
						
					
					
						commit
						6395f3d8c8
					
				| 
						 | 
				
			
			@ -156,8 +156,7 @@ public class UserService {
 | 
			
		|||
     * Modified to register extra user data
 | 
			
		||||
     * name, iconoPerfil, fechaNacimiento, estado, pais
 | 
			
		||||
     */
 | 
			
		||||
    public User registerUser(AdminUserDTO userDTO, String password, String name, Integer profileIcon) {
 | 
			
		||||
        System.out.println(name);
 | 
			
		||||
    public User registerUser(AdminUserDTO userDTO, String password, String name, Integer profileIcon, Integer isAdmin) {
 | 
			
		||||
        userRepository
 | 
			
		||||
            .findOneByLogin(userDTO.getLogin().toLowerCase())
 | 
			
		||||
            .ifPresent(
 | 
			
		||||
| 
						 | 
				
			
			@ -195,7 +194,12 @@ public class UserService {
 | 
			
		|||
        // new user gets registration key
 | 
			
		||||
        newUser.setActivationKey(RandomUtil.generateActivationKey());
 | 
			
		||||
        Set<Authority> authorities = new HashSet<>();
 | 
			
		||||
        // Check whether it's an ADMIN or USER and apply authorities
 | 
			
		||||
        if (isAdmin == 1) {
 | 
			
		||||
            authorityRepository.findById(AuthoritiesConstants.ADMIN).ifPresent(authorities::add);
 | 
			
		||||
        }
 | 
			
		||||
        authorityRepository.findById(AuthoritiesConstants.USER).ifPresent(authorities::add);
 | 
			
		||||
 | 
			
		||||
        newUser.setAuthorities(authorities);
 | 
			
		||||
        userRepository.save(newUser);
 | 
			
		||||
        this.clearUserCaches(newUser);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -66,7 +66,8 @@ public class AccountResource {
 | 
			
		|||
            managedUserVM,
 | 
			
		||||
            managedUserVM.getPassword(),
 | 
			
		||||
            managedUserVM.getName(),
 | 
			
		||||
            managedUserVM.getProfileIcon()
 | 
			
		||||
            managedUserVM.getProfileIcon(),
 | 
			
		||||
            managedUserVM.getIsAdmin()
 | 
			
		||||
        );
 | 
			
		||||
        mailService.sendActivationEmail(user);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,8 @@ public class ManagedUserVM extends AdminUserDTO {
 | 
			
		|||
 | 
			
		||||
    private Integer profileIcon;
 | 
			
		||||
 | 
			
		||||
    private Integer isAdmin;
 | 
			
		||||
 | 
			
		||||
    public ManagedUserVM() {
 | 
			
		||||
        // Empty constructor needed for Jackson.
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +52,14 @@ public class ManagedUserVM extends AdminUserDTO {
 | 
			
		|||
        this.profileIcon = profileIcon;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Integer getIsAdmin() {
 | 
			
		||||
        return isAdmin;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setIsAdmin(Integer isAdmin) {
 | 
			
		||||
        this.isAdmin = isAdmin;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // prettier-ignore
 | 
			
		||||
    @Override
 | 
			
		||||
    public String toString() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,6 +64,7 @@ describe('Component Tests', () => {
 | 
			
		|||
          langKey: 'es',
 | 
			
		||||
          name: '',
 | 
			
		||||
          profileIcon: 1,
 | 
			
		||||
          isAdmin: 0,
 | 
			
		||||
        });
 | 
			
		||||
        expect(comp.success).toBe(true);
 | 
			
		||||
        expect(comp.errorUserExists).toBe(false);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,8 @@
 | 
			
		|||
import { Component, AfterViewInit, ElementRef, ViewChild } from '@angular/core';
 | 
			
		||||
import { Component, OnInit, AfterViewInit, ElementRef, ViewChild } from '@angular/core';
 | 
			
		||||
import { HttpErrorResponse } from '@angular/common/http';
 | 
			
		||||
import { FormBuilder, Validators } from '@angular/forms';
 | 
			
		||||
import { TranslateService } from '@ngx-translate/core';
 | 
			
		||||
import { Router } from '@angular/router';
 | 
			
		||||
 | 
			
		||||
import { EMAIL_ALREADY_USED_TYPE, LOGIN_ALREADY_USED_TYPE } from 'app/config/error.constants';
 | 
			
		||||
import { RegisterService } from './register.service';
 | 
			
		||||
| 
						 | 
				
			
			@ -11,7 +12,7 @@ import { RegisterService } from './register.service';
 | 
			
		|||
  templateUrl: './register.component.html',
 | 
			
		||||
  styleUrls: ['./register.component.scss'],
 | 
			
		||||
})
 | 
			
		||||
export class RegisterComponent implements AfterViewInit {
 | 
			
		||||
export class RegisterComponent implements OnInit, AfterViewInit {
 | 
			
		||||
  // @ViewChild('name', { static: false })
 | 
			
		||||
  // name?: ElementRef;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -52,6 +53,7 @@ export class RegisterComponent implements AfterViewInit {
 | 
			
		|||
  errorEmailExists = false;
 | 
			
		||||
  errorUserExists = false;
 | 
			
		||||
  success = false;
 | 
			
		||||
  isAdmin: number = 0;
 | 
			
		||||
 | 
			
		||||
  // Login will be used to store the email as well.
 | 
			
		||||
  // login: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(254), Validators.email]]
 | 
			
		||||
| 
						 | 
				
			
			@ -64,6 +66,10 @@ export class RegisterComponent implements AfterViewInit {
 | 
			
		|||
 | 
			
		||||
  constructor(private translateService: TranslateService, private registerService: RegisterService, private fb: FormBuilder) {}
 | 
			
		||||
 | 
			
		||||
  ngOnInit(): void {
 | 
			
		||||
    this.isAdmin = window.location.href.includes('/account/register') ? 0 : 1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ngAfterViewInit(): void {
 | 
			
		||||
    //   if (this.name) {
 | 
			
		||||
    //     this.name.nativeElement.focus();
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +92,15 @@ export class RegisterComponent implements AfterViewInit {
 | 
			
		|||
      console.log(name);
 | 
			
		||||
 | 
			
		||||
      this.registerService
 | 
			
		||||
        .save({ login, email, password, langKey: this.translateService.currentLang, name, profileIcon: this.profileIcon })
 | 
			
		||||
        .save({
 | 
			
		||||
          login,
 | 
			
		||||
          email,
 | 
			
		||||
          password,
 | 
			
		||||
          langKey: this.translateService.currentLang,
 | 
			
		||||
          name,
 | 
			
		||||
          profileIcon: this.profileIcon,
 | 
			
		||||
          isAdmin: this.isAdmin,
 | 
			
		||||
        })
 | 
			
		||||
        .subscribe(
 | 
			
		||||
          () => (this.success = true),
 | 
			
		||||
          response => this.processError(response)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@ export class Registration {
 | 
			
		|||
    public password: string,
 | 
			
		||||
    public langKey: string,
 | 
			
		||||
    public name: string,
 | 
			
		||||
    public profileIcon: number
 | 
			
		||||
    public profileIcon: number,
 | 
			
		||||
    public isAdmin: number
 | 
			
		||||
  ) {}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue