vityaman-edu / lms

A simple learning management system.
Apache License 2.0
4 stars 0 forks source link

Add authentication spring security #79

Closed vityaman closed 3 months ago

vityaman commented 4 months ago

https://learn.openapis.org/specification/security.html

vityaman commented 4 months ago

Old design: https://github.com/vityaman-edu/lms/issues/100#issuecomment-2088082847

vityaman commented 4 months ago

New design

REST API


// Creates a user with Yandex ID connected and takes an alias from there
POST /auth/yandex/code   (OAuthCode) -> (User, AccessToken)

// Sign in via Yandex ID OAuth code
PUT  /auth/yandex/code   (OAuthCode) -> (AccessToken)

// Or

// Creates a user with Yandex ID connected
POST /auth/yandex/code   (User.Draft, OAuthCode) -> (User, AccessToken)

// Sign in via Yandex ID OAuth code
PUT  /auth/yandex/code   (OAuthCode)             -> (AccessToken)

// Extension point
POST /auth/vk/code       (OAuthCode) -> (User, AccessToken)
PUT  /auth/vk/code       (OAuthCode) -> (AccessToken)
POST /auth/github/code   (OAuthCode) -> (User, AccessToken)
PUT  /auth/github/code   (OAuthCode) -> (AccessToken)

Database

CREATE TABLE lms.user (
    id              serial      PRIMARY KEY,
    creation_moment timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE lms.auth_yandex (
    user_id            integer      PRIMARY KEY REFERENCES lms.user(id),
    id                 integer      NOT NULL,
    login              varchar(256) NOT NULL
);