Кастомизация интерфейса Windows Azure Pack для работы со сторонним биллингом.
После интеграции WAP с нашим биллингом появилась необходимость убрать часть функционала портала. Как сделать изменения через базу данных я не нашел, поэтому пришлось внести изменения в некоторые файлы на всех серверах с сайтами "MgmtSvc-AuthSite" и "MgmtSvc-TenantSite".
1. Убираем возможность смены пароля от портала пользователями, так как если пользователь это сделает, перестанет работать SSO (Single Sign-On).
Делаем копию файла "C:\inetpub\MgmtSvc-AuthSite\Views\ChangePassword\Index.cshtml" и меняем его содержимое на следующее:
<script>
window.location.href = "https://billing.lin.by"
</script>
Теперь, при попытке изменить пароль на портале WAP, пользователь будет перенаправлен на страницу биллинга, где и сможет это выполнить.
2. Отключаем ненужные возможности в меню "Моя учетная запись".
Сделать это можно отредактировав файл "C:\inetpub\MgmtSvc-TenantSite\Content\AccountsTenant\Templates\MyAccount.Dashboard.html". Надо удалить или закомментировать соответствующие элементы списка (тег <li>). Не забываем сохранить резервную копию файла до того, как внесем изменения :) Итоговое содержимое файла (отключены все три пункта):
<div class="quickStartHeader">
<div class="description">
<h2>{{>title}}</h2>
<div class="headersubtext">{{>subTitle}}</div>
</div>
</div>
3. Удаляем возможность управления подписками в меню "Моя учетная запись" > "Подписки".
Для этого придется внести правки в файл "c:\inetpub\MgmtSvc-TenantSite\Content\AccountsTenant\Scripts\MyAccount.Subscriptions.js". В конце файла находим строки, отвечающие за отображение кнопок и комментируем их:
commandButtons = {
/* Delete: {
command: "Delete",
executeCommand: subscription_performDeleteCommand
},
ChangeName: {
command: "ChangeName",
executeCommand: subscription_performChangeNameCommand
} */
};
4. Удаляем возможность управления администраторами подписки в меню "Моя учетная запись" > "Администраторы".
В конце файла "c:\inetpub\MgmtSvc-TenantSite\Content\AccountsTenant\Scripts\MyAccount.Administrators.js" находим строки, отвечающие за отображение кнопок и комментируем их:
commandButtons = {
/* Add: {
command: "Add",
executeCommand: administrator_performAddCommand
},
Edit: {
command: "Edit",
executeCommand: administrator_performEditCommand
},
Remove: {
command: "Remove",
executeCommand: administrator_performRemoveCommand
}
*/
};
5. Отключаем возможность регистрации пользователя на портале.
Так как у нас пользователями управляет биллинг, данная возможность не нужна и может запутать пользователей. Избавится от нее можно отредактировав файл "C:\inetpub\MgmtSvc-AuthSite\Views\Login". Комментируем следующую строку:
<li><a href="#" class="kt-signup-button">@TenantPortalControllerResources.SignUp</a></li>
Дополнительно можно закомментировать:
@Html.Partial("NewAccountSignup")
@Html.Partial("ForgotMyPassword")
@Html.Partial("SignupValidationRequired")
@Html.Partial("ResetAccountPassword")
6. Отключаем взоможность выбора протокола IPv6 при настраиваемом создании сети. Для этого в файле C:\inetpub\MgmtSvc-TenantSite\Content\Network\Templates\Dialogs\CustomCreate_Info.html изменяем класс, отключив его отображение:
<div class="aux-dialog-item" style="display:none">
На этом все, первоначальная кастомизация портала WAP, управление пользователями которого осуществляется с помощью биллинга, закончена.
6. Отключаем ненужную кнопку "Подключение по RDP":
notepad c:\inetpub\MgmtSvc-TenantSite\Content\VM\Scripts\Commands\VM.Command.VirtualMachine.RemoteDesktop.js
visible: function(dataContext, navigationContext) {
return false;
},
Удивляюсь - как вы находите все эти возможности в коде? Неужели перечитываете все файлы страниц и скриптов? Сам занимаюсь кастомизацией и ищу где что скрыто. Спасибо за статью!
ОтветитьУдалитьUPD: Ищу возможность жесткого задания пароля администратора создаваемых ВМ. Чтобы не пользователи устанавливали пароль создаваемых ими ВМ, а он был жестко определен. Может быть сталкивались с таким и знаете куда смотреть?
УдалитьА вы хотите сделать один пароль на всех? Или чтобы он генерировался автоматически каждый раз новый?
ОтветитьУдалитьПервый вариант вообще простой. Изменяем параметры формы, чтобы в ней отображался пароль и его нельзя было редактировать.
Со вторым вариантом немного повозиться надо будет, если не знаете frontend (я не знаю :) ).
Один пароль для всех. И чтоб пользователи его не видели. Создаваемые ВМ автоматически входят в домен в нужную OU - там применяются политики и прочая. Пароль локального админа пользователи знать не должны.
УдалитьЯ нашел в файле MgmtSvc-TenantSite\Content\VM\Templates\Menu\VMInstanceGallery\VMInstance.Gallery.VMSettings.html
УдалитьСтроку условия, вроде как отвечающего за форму ввода параметров админа, но где задается значение isAdminUserNamePasswordEnable не нашел. Прописать жестко false? )))
{^{if vmData.isAdminUserNamePasswordEnable === true}}
Этот комментарий был удален автором.
Удалить