// Copyright 2018 The Nomulus Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

{namespace registry.soy.registrar.otesetup}


/**
 * Main page for the OT&amp;E creation. Holds a form with the required data.
 */
{template .formPage}
  {@param xsrfToken: string} /** Security token. */
  {@param username: string} /** Arbitrary username to display. */
  {@param logoutUrl: string} /** Generated URL for logging out of Google. */
  {@param productName: string} /** Name to display for this software product. */
  {@param analyticsConfig: [googleAnalyticsId: string|null]}

  {@param logoFilename: string}
  {@param? errorMessage: string} /** If set - display the error message above the form. */
  {@param? baseClientId: string} /** If set - an initial value to fill for the base client ID. */
  {@param? contactEmail: string} /** If set - an initial value to fill for the email. */

  {call registry.soy.console.header}
    {param app: 'registrar' /}
    {param subtitle: 'OT&E setup' /}
    {param analyticsConfig: $analyticsConfig /}
  {/call}
  {call registry.soy.console.googlebar data="all" /}
  <div id="reg-content-and-footer">
    <div id="reg-content">
      <h1>Setup OT&E</h1>
      {if isNonnull($errorMessage)}
        <h2 class="{css('kd-errormessage')}">Failed: {$errorMessage}</h2>
      {/if}
      {call .form_ data="all" /}
    </div>
    {call registry.soy.console.footer /}
  </div>
{/template}


/**
 * Result page for a successful OT&amp;E setup.
 */
{template .resultSuccess}
  {@param baseClientId: string} /** The base clientId used for the OT&amp;E setup. */
  {@param contactEmail: string} /** The contact's email added to the registrars. */
  {@param clientIdToTld: map<string, string>} /** The created registrars->TLD mapping. */
  {@param password: string} /** The password given for the created registrars. */
  {@param username: string} /** Arbitrary username to display. */
  {@param logoutUrl: string} /** Generated URL for logging out of Google. */
  {@param productName: string} /** Name to display for this software product. */
  {@param logoFilename: string}
  {@param analyticsConfig: [googleAnalyticsId: string|null]}

  {call registry.soy.console.header}
    {param app: 'registrar' /}
    {param subtitle: 'OT&E setup' /}
    {param analyticsConfig: $analyticsConfig /}
  {/call}
  {call registry.soy.console.googlebar data="all" /}
  <div id="reg-content-and-footer">
    <div id="reg-content" class="{css('item')} {css('registrar')}">
      <h1>OT&E successfully created for registrar {$baseClientId}!</h1>
      <table>
        <tr>
          <td>
            <label class="{css('setting-label')}">EPP credentials</label>
            <span class="{css('description')}">Copy and paste this into an email to the registrars</span>
          </td>
          <td class="{css('setting')}">
            <textarea rows="7" cols="100" spellcheck="false" readonly>
              {for $clientId in mapKeys($clientIdToTld)}
                  Login: {$clientId}{sp}{sp}{sp}{sp}{sp}{sp}
                  Password: {$password}{sp}{sp}{sp}{sp}{sp}{sp}
                  TLD: {$clientIdToTld[$clientId]}{sp}{sp}{sp}{sp}{sp}{sp}{\n}
              {/for}
            </textarea>
          </td>
      </table>
      Gave <label>{$contactEmail}</label> web-console access to these registrars.
      <h1>Don't forget to set the <label>Certificate</label> and <label>IP-whitelist</label> for these Registrars!</h1>
      Links to the security page for your convenience:<br>
      {for $clientId in mapKeys($clientIdToTld)}
        <a href="/registrar?clientId={$clientId}#security-settings" target="_blank">{$clientId}</a><br>
      {/for}
    </div>
    {call registry.soy.console.footer /}
  </div>
{/template}


/** Form for getting registrar info. */
{template .form_ visibility="private"}
  {@param xsrfToken: string} /** Security token. */
  {@param? baseClientId: string} /** If set - an initial value to fill for the base client ID. */
  {@param? contactEmail: string} /** If set - an initial value to fill for the email. */

  <form name="item" class="{css('item')}" method="post" action="/registrar-ote-setup">
    <table>
      <tr class="{css('kd-settings-pane-section')}">
        <td>
          {call registry.soy.forms.inputFieldLabel}
            {param label: 'Base client ID' /}
          {/call}
        </td>
        <td class="{css('setting')}">
          {call registry.soy.forms.inputFieldValue }
            {param name: 'clientId' /}
            {param value: $baseClientId /}
            {param placeholder: 'registrar\'s ID' /}
            {param required: true /}
          {/call}
          <span class="{css('description')}">
            Must consist of 3-14 lower-case letters and numbers.
          </span>
        </td>
      </tr>
      {call registry.soy.forms.inputFieldRowWithValue}
        {param label: 'Contact email' /}
        {param name: 'email' /}
        {param value: $contactEmail /}
        {param placeholder: 'registrar\'s assigned email' /}
        {param description kind="text"}
          Will be granted web-console access to the OTE registrars.
        {/param}
        {param required: true /}
      {/call}
      <tr>
        <td colspan="2">
          <hr>
          <h1>Optional fields</h1>
          Don't fill unless you have a good reason to.
        </td>
      </tr>
      {call registry.soy.forms.inputFieldRowWithValue}
        {param label: 'EPP password' /}
        {param name: 'password' /}
        {param placeholder: 'Optional' /}
        {param description kind="text"}
          The password used to for EPP login. Leave blank to auto-generate.
        {/param}
      {/call}
      {call registry.soy.forms.submitRow}
        {param label: 'create' /}
      {/call}
    </table>
    <input type="hidden" name="xsrfToken" value="{$xsrfToken}">
  </form>
{/template}


/**
 * Who goes thar?!
 */
{template .whoareyou}
  {@param username: string} /** Arbitrary username to display. */
  {@param logoutUrl: string} /** Generated URL for logging out of Google. */
  {@param logoFilename: string}
  {@param productName: string}
  {@param analyticsConfig: [googleAnalyticsId: string|null]}

  {call registry.soy.console.header}
    {param app: 'registrar' /}
    {param subtitle: 'Not Authorized' /}
    {param analyticsConfig: $analyticsConfig /}
  {/call}
  <div class="{css('whoAreYou')}">
    <a class="{css('logo')}" href="/registrar">
      <img src="/assets/images/{$logoFilename}" alt="{$productName}">
    </a>
    <h1>You need permission</h1>
    <p>
      Only {$productName} Admins have access to this page.
      You are signed in as <strong>{$username}</strong>.
    <div>
      <a href="{$logoutUrl}"
         class="{css('kd-button')} {css('kd-button-submit')}"
         tabindex="-1">Logout and switch to another account</a>{sp}
      <a href="/registrar"
         class="{css('kd-button')} {css('kd-button-submit')}"
         tabindex="-1">Go to the Registrar web console</a>
    </div>
  </div>
{/template}


