@startuml tech-diagram
title [T] ConSOLIDate.org login with facebook feature

actor User
participant "ConSOLIDate.org" as App
participant "Spring Security" as Security
participant "Facebook OAuth2" as Facebook

User -> App: Open Home Page
App -> User: Show Login Page with "Login with Facebook" button
User -> App: Click "Login with Facebook" Button
App -> Security: Redirect to Facebook OAuth2 Authorization URL
Security -> Facebook: Redirect User to Facebook OAuth2 Authorization URL
Facebook -> User: Show Facebook Login Page
alt User provides credentials
    User -> Facebook: Provide Facebook Credentials
    Facebook -> Security: OAuth2 Authorization Code
    Security -> App: Redirect with Authorization Code
    App -> Security: Exchange Code for Access Token
    Security -> Facebook: Request Access Token
    Facebook -> Security: Access Token and User Info Endpoint URL
    Security -> App: Access Token and User Info Endpoint URL
    App -> Facebook: Retrieve User Info
    Facebook -> App: User Info
    App -> User: Display "Welcome <Name> <Surname> in ConSOLIDate.org"
else User cancels login
    User -> Facebook: Cancel Login
    Facebook -> Security: Redirect with Error
    Security -> App: Redirect with Error
    App -> User: Show Login Page with Error Message
end
@enduml