# 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. ```bash 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 ``` 2. Добавить дополнительную обработку на стороне `openresty-lb-core-auth`: #### `/opt/openresty/nginx/conf/co/lua/auth/co_auth_login.lua` Ищем строку в конце файла (~60): ```lua ngx.say(cjson.encode({ success = "true", token = token })); ``` Добавляем перед ней: ```lua -- 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 .. ">."); ```