Authorizer

Сервис Authorizer #

Сервис Authorizer служит для централизованного управления (создания, редактирования, удаления) пользователями всех внутренних сервисов компании ATN. Права пользователей описаны подробнее в Роли пользователей

Авторизация пользователя #

В Authoraizer есть два этапа авторизации.

  1. Метод signin - это авторизация через логин и пароль. С разных внутренних сервисов можно дать запрос на авторизацию и, если логин и пароль верны, получить Токен для доступа к внутренним сервисам. Запрос идет с Web интерфейса.
router.HandleFunc("/signin", controllers.SigninHandler).Methods("POST")

Логин и пароль отправляем в JSON в запросе POST, следующей конструкции:
{"email": "test@gmail.com ", "password": "123456"}

SigninHandler находится в файле controllers/auth.go

  1. Метод authenticate - это авторизация по Токену. После того как пользователь прошел signin авторизацию он уже имеет Token. В запросе отправляется Token, для получение данных пользователя.
router.HandleFunc("/authenticate", controllers.AuthenticateHandler).Methods("GET") // etot metod ne troga^

Токен отправляем в HEADERS запроса GET
"Atn-Token":"MWNhYTZlZGI5ZmUyNDI5NzMwYzA3MzBhNDgyYjRkNzY="

AuthenticateHandler находится в файле controllers/profile.go

Токен. Время жизни Токена #

Время жизни Токена указывается в константе TOKENLIVE:

const TOKENLIVE = 60 * 60 * 24 * 2

время жизни Токена указывается в файле common/config.go

Список ролей пользователей #

Типы ролей пользователей указываются в массиве Roles:

var Roles = []string{"inactive","admin","sales","gopher"}

Для добавления новой роли нужно вручную дописать новое значение в массив. Список ролей пользователей указывается в файлеcommon/config.go

Роли пользователей. Права доступа #

Есть три роли пользователей:

  • admin - эта группа пользователей видит всех зарегистрированных пользователей и может создавать новых, редактировать и удалять всех пользователей. Даже пользователей с ролью admin. Также может удалить себя. Имеет доступ ко всем сервисам и ко всему что есть.

нельзя удалить и изменять данные только одного пользователя с id=5ea8258da03db00001256945

func (r *UserRepository) Delete(id string) error {
   if !bson.IsObjectIdHex(id) {
   	return errors.New("Invalid User ID.")
   }
   if id == "5ea8258da03db00001256945" {
   	return errors.New("You can not delete this account.")
   }
   err := r.C.Remove(bson.M{"_id": bson.ObjectIdHex(id)})
   return err
}
  • sales - Не имеет доступа к созданию и редактированию пользователей. Только редактирование своей учетной записи. Имеет доступ ко всем сервисам, без функций администрирования
  • gopher - Может редактировать только свои учетные данные. Может просматривать только заявки.

user rules img