Skip to content

Commit

Permalink
Exibir usuário logado
Browse files Browse the repository at this point in the history
  • Loading branch information
andrepenteado committed Sep 1, 2023
1 parent 859f04b commit 6854112
Show file tree
Hide file tree
Showing 13 changed files with 131 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public class PerfilUsuario {
@NotNull(message = "Perfil do sistema é um campo obrigatório")
private String authority;

@Transient
private PerfilSistema perfilSistema;

@Embeddable
@Data
public static class IdPerfilUsuario implements Serializable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.time.LocalDateTime;
import java.util.List;

@Entity
@Table(name = "users")
Expand All @@ -33,4 +35,7 @@ public class Usuario {
private String nome;

private Boolean enabled;

@Transient
private List<PerfilUsuario> perfis;
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ public interface PerfilSistemaRepository extends JpaRepository<PerfilSistema, Lo

List<PerfilSistema> findBySistemaIdOrderByAuthority(String idSistema);

PerfilSistema findByAuthority(String authority);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.github.andrepenteado.apsso.backend.resources;

import com.github.andrepenteado.apsso.backend.models.PerfilSistema;
import com.github.andrepenteado.apsso.backend.models.PerfilUsuario;
import com.github.andrepenteado.apsso.backend.models.Usuario;
import com.github.andrepenteado.apsso.backend.services.PerfilSistemaService;
import com.github.andrepenteado.apsso.backend.services.PerfilUsuarioService;
import com.github.andrepenteado.apsso.backend.services.UsuarioService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/auth")
@RequiredArgsConstructor
@Slf4j
public class AuthResource {

private final UsuarioService usuarioService;

private final PerfilUsuarioService perfilUsuarioService;

private final PerfilSistemaService perfilSistemaService;

@GetMapping("/usuario")
public Usuario usuario(Authentication authentication) {
String username = authentication.getName();
Usuario usuario = usuarioService.buscar(username).get();
List<PerfilUsuario> perfis = perfilUsuarioService.listarPorUsuario(username);
for (PerfilUsuario perfilUsuario: perfis) {
PerfilSistema perfilSistema = perfilSistemaService.buscar(perfilUsuario.getAuthority());
perfilUsuario.setPerfilSistema(perfilSistema);
}
usuario.setPerfis(perfis);
return usuario;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@ public interface PerfilSistemaService {

void excluir(Long id);

PerfilSistema buscar(String authority);

}
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,9 @@ public void excluir(Long id) {
}
}

@Override
public PerfilSistema buscar(String authority) {
return repository.findByAuthority(authority);
}

}
2 changes: 2 additions & 0 deletions frontend/src/app/config/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@ export class Api {

static readonly USUARIOS: string = '/usuarios';

static readonly AUTH: string = '/auth';

}
3 changes: 3 additions & 0 deletions frontend/src/app/models/perfil-usuario.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import {PerfilSistema} from "./perfil-sistema";

export class PerfilUsuario {

username: string;
authority: string;
perfilSistema: PerfilSistema;

}
3 changes: 3 additions & 0 deletions frontend/src/app/models/usuario.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import {PerfilUsuario} from "./perfil-usuario";

export class Usuario {

username: string;
Expand All @@ -6,5 +8,6 @@ export class Usuario {
dataCadastro: Date;
dataUltimaModificacao: Date;
enabled: boolean;
perfis: PerfilUsuario[];

}
32 changes: 32 additions & 0 deletions frontend/src/app/services/auth.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { Injectable } from '@angular/core';
import {HttpClient, HttpHeaders} from "@angular/common/http";
import { environment } from '../../environments/environment';
import { Api } from "../config/api";
import {Usuario} from "../models/usuario";
import {Observable} from "rxjs";

@Injectable({
providedIn: 'root'
})
export class AuthService {

constructor(
private http: HttpClient
) { }

public usuarioLogado(): Observable<Usuario> {
return this.http.get<Usuario>(`${environment.backendURL}${Api.AUTH}/usuario`);
}

logout() {
let headers = new HttpHeaders({
'Content-type': 'application/x-www-form-urlencoded; charset=utf-8'});

this.http.post('auth/refresh/revoke', {}, { headers: headers })
.subscribe({
next: data => {
window.location.href = `${environment.backendURL}`;
}
});
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<div class="d-flex profile-media">
<img class="b-r-10" src="assets/images/dashboard/profile.jpg" alt="">
<div class="media-body"><span>Emay Walter</span>
<p class="mb-0 font-roboto">Admin <i class="middle fa fa-angle-down"></i></p>
<img class="b-r-10" src="assets/images/user/user.png" alt="">
<div class="media-body"><span>{{ usuario.nome }}</span>
<p class="mb-0 font-roboto">{{ nomePerfil() }} <i class="middle fa fa-angle-down"></i></p>
</div>
</div>
<ul class="profile-dropdown onhover-show-div">
<li><a href="#"><app-feather-icons [icon]="'user'"></app-feather-icons><span>Account </span></a></li>
<!--<li><a href="#"><app-feather-icons [icon]="'user'"></app-feather-icons><span>Account </span></a></li>
<li><a href="#"><app-feather-icons [icon]="'mail'"></app-feather-icons><span>Inbox</span></a></li>
<li><a href="#"><app-feather-icons [icon]="'file-text'"></app-feather-icons><span>Taskboard</span></a></li>
<li><a href="#"><app-feather-icons [icon]="'settings'"></app-feather-icons><span>Settings</span></a></li>
<li><a href="#"><app-feather-icons [icon]="'log-in'"></app-feather-icons><span>Log in</span></a></li>
</ul>
<li><a href="#"><app-feather-icons [icon]="'settings'"></app-feather-icons><span>Settings</span></a></li>-->
<li><a href="#" (click)="logout()"><app-feather-icons [icon]="'log-in'"></app-feather-icons><span>Logout</span></a></li>
</ul>
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { Component, OnInit } from '@angular/core';
import {AuthService} from "../../../../../services/auth.service";
import {Usuario} from "../../../../../models/usuario";
import {PerfilUsuario} from "../../../../../models/perfil-usuario";

@Component({
selector: 'app-my-account',
Expand All @@ -7,9 +10,27 @@ import { Component, OnInit } from '@angular/core';
})
export class MyAccountComponent implements OnInit {

constructor() { }
usuario: Usuario;

constructor(
private authService: AuthService
) { }

ngOnInit() {
this.authService.usuarioLogado().subscribe({
next: usuario => this.usuario = usuario
});
}

nomePerfil(): string {
for (let i=0; i < this.usuario.perfis.length; i++) {
let perfilUsuario = this.usuario.perfis[i];
if (perfilUsuario.authority.startsWith('ROLE_APsso_'))
return perfilUsuario.perfilSistema.descricao;
}
}

logout() {
this.authService.logout();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@
<app-feather-icons [icon]="'maximize'"></app-feather-icons>
</a>
</li>
<!--<li class="profile-nav onhover-dropdown p-0">
<li class="profile-nav onhover-dropdown p-0">
<app-my-account></app-my-account>
</li>-->
</li>
</ul>
</div>
</div>
Expand Down

0 comments on commit 6854112

Please sign in to comment.