Files
avroid_scripts/myoffice_projects/co_scripts/pgs_avatar_sync/README.md
aleksandr.vodyanov 9f2c40e688 add myoffice scripts
2024-04-09 10:19:48 +03:00

2.5 KiB
Raw Blame History

PGS_AVATAR_SYNC

Скрипт использует Flask для REST API.

Позволяет при входе пользователей в CO обращаться на IPA сервер для получения фотографии пользователя, а затем, при необходимости, отправляет её в COAPI для обновления в профиле пользователя.

Переменные окружения

Название Значение по умолчанию Описание
CO_API_URL "https://coapi.hyperus.team/api/v1/auth" Конечная точка COAPI для работы с "profile/picture"
IPA_ADDRESS ipa.hyperus.team Адрес сервера IPA
IPA_LOGIN automated.carbon Учетная запись подключения к IPA
IPA_PASSWORD - Пароль учетной записи подключения к IPA

Установка

  1. Собрать образ и запустить контейнер на сервере CO.
docker build . --build-arg FLASK_PORT=8085 --tag pgs_avatar_sync:0.0.1
docker run -d -e IPA_PASSWORD="securepassword" --name pgs_avatar_sync --network host --restart always pgs_avatar_sync:0.0.1
  1. Добавить дополнительную обработку на стороне openresty-lb-core-auth:

/opt/openresty/nginx/conf/co/lua/auth/co_auth_login.lua

Ищем строку в конце файла (~60):

ngx.say(cjson.encode({ success = "true", token = token }));

Добавляем перед ней:

-- Send data for update avatars
local httpc = http:new();
local request = {
    method = "POST",
    body = cjson.encode({ login = login, token = token }),
    headers = {
        ["Content-Type"] = "application/json; charset utf-8"
    },
    ssl_verify = false
};
--- Необходимо указать корректный порт, FLASK_PORT переданный при сборке
local avatar_res, avatar_err = httpc:request_uri("http://172.17.0.1:8085/avatar", request);
if not avatar_res then
    ngx.log(ngx.ERR, "Request failed: ", avatar_err)
end
httpc:close();
ngx.log(ngx_INFO, "Update avatar for <" .. login .. ">.");