@startuml class Account { - email: string - phoneNumber: string - id: int + __construct (email : string, ???) + setMailAddress(string) + getMailAddress(): string + getPhoneNumber(): string + setPhoneNumber(string) + getUser(): AccountUser + getId(): int } Account --> "- user" AccountUser Account --> "- teams *" Team interface User { + getName(): string + getProfilePicture(): Url + getAge(): int } class AccountUser { - name: string - profilePicture: Url - age: int + __construct(name : string, age : int, profilePicture : string) + setName(string) + setProfilePicture(URI) + setAge(int) } AccountUser ..|> User class Member { - userId: int + __construct(role : MemberRole) + getUserId(): int + getRole(): MemberRole } Member --> "- role" MemberRole enum MemberRole { PLAYER COACH } class Team { - name: string - picture: Url + __construct(name : string, picture : string, mainColor : Color, secondColor : Color,members : array) + getName(): string + getPicture(): Url + getMainColor(): Color + getSecondColor(): Color + listMembers(): array } Team --> "- mainColor" Color Team --> "- secondColor" Color Team --> "- members *" Member class Color { - value: int + getValue(): int } class AuthController{ + __construct(model : AuthModel) + displayRegister() : HttpResponse + displayBadFields(viewName : string, fails : array) : HttpResponse + confirmRegister(request : array) : HttpResponse + displayLogin() : HttpResponse + confirmLogin() : HttpResponse } AuthController --> "- model" AuthModel class AuthModel{ + __construct(gateway : AuthGateway) + register(username : string, password : string, confirmPassword : string, email : string): array + getAccount(email : string):array + login(email : string, password : string) } AuthModel --> "- gateway" AuthGateway class AuthGateway{ -con : Connection + __construct (con : Connection) + mailExist(email : string) : bool + insertAccount(username : string, hash : string, email : string) + getHash(email : string):string + getAccount (email : string): array } @enduml