среда, 27 января 2016 г.

Кастомизация интерфейса 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;
},



6 комментариев:

  1. Удивляюсь - как вы находите все эти возможности в коде? Неужели перечитываете все файлы страниц и скриптов? Сам занимаюсь кастомизацией и ищу где что скрыто. Спасибо за статью!

    ОтветитьУдалить
    Ответы
    1. UPD: Ищу возможность жесткого задания пароля администратора создаваемых ВМ. Чтобы не пользователи устанавливали пароль создаваемых ими ВМ, а он был жестко определен. Может быть сталкивались с таким и знаете куда смотреть?

      Удалить
  2. А вы хотите сделать один пароль на всех? Или чтобы он генерировался автоматически каждый раз новый?

    Первый вариант вообще простой. Изменяем параметры формы, чтобы в ней отображался пароль и его нельзя было редактировать.
    Со вторым вариантом немного повозиться надо будет, если не знаете frontend (я не знаю :) ).

    ОтветитьУдалить
    Ответы
    1. Один пароль для всех. И чтоб пользователи его не видели. Создаваемые ВМ автоматически входят в домен в нужную OU - там применяются политики и прочая. Пароль локального админа пользователи знать не должны.

      Удалить
    2. Я нашел в файле MgmtSvc-TenantSite\Content\VM\Templates\Menu\VMInstanceGallery\VMInstance.Gallery.VMSettings.html

      Строку условия, вроде как отвечающего за форму ввода параметров админа, но где задается значение isAdminUserNamePasswordEnable не нашел. Прописать жестко false? )))
      {^{if vmData.isAdminUserNamePasswordEnable === true}}

      Удалить
    3. Этот комментарий был удален автором.

      Удалить