Intro
info
Please note that abstract entities of the user, service type are not used in a single language. Historical exception for services like App.
Ивенты
Все изменения состояния фейворитов для игрока изменяются через ивент. Redis используется для хранения агрегатов.
topic: favorite.games.changes
export default {
name: 'FavoriteChange',
scheme: avro.Type.forSchema({
type: 'record',
namespace: 'favorite.games',
name: 'Action',
fields: [
{
name: 'player', // UUID (Новый юид пользователя, UUIDv4)
type: 'string',
},
{
name: 'game_id',
type: 'string',
},
{
name: 'action',
type: {type: 'enum', name: 'action', symbols: ['ADD', 'DELETE']},
},
{
name: 'timestamp',
type: 'long',
},
{
name: 'event_version',
type: 'int',
},
],
}),
};
Аутентификация
Атентификация используется стандартная, через JWT. Для менеджерского доступа используется JWT из admin_auth в котором есть необходимые скоупы.
jwt payload
{
...
"scope": ["favorite_games.all"],
...
}
permissions:
favorite_games:
all: 'service.favorite_games.*'