Сервис Authorizer #
Сервис Authorizer служит для централизованного управления (создания, редактирования, удаления) пользователями всех внутренних сервисов компании ATN. Права пользователей описаны подробнее в Роли пользователей
Авторизация пользователя #
В Authoraizer есть два этапа авторизации.
- Метод signin - это авторизация через логин и пароль. С разных внутренних сервисов можно дать запрос на авторизацию и, если логин и пароль верны, получить Токен для доступа к внутренним сервисам. Запрос идет с Web интерфейса.
router.HandleFunc("/signin", controllers.SigninHandler).Methods("POST")
Логин и пароль отправляем в JSON в запросе POST, следующей конструкции:
{"email": "test@gmail.com ", "password": "123456"}
SigninHandler находится в файле controllers/auth.go
- Метод 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 - Может редактировать только свои учетные данные. Может просматривать только заявки.