app/views/credentials.scala.html (135 lines of code) (raw):

@import com.gu.googleauth.UserIdentity @import com.gu.janus.model.{AwsAccount, JanusData} @import software.amazon.awssdk.services.sts.model.Credentials @import java.time.Instant @import play.api.Mode @(expiry: Instant, accountsCredentials: List[(AwsAccount, Credentials)], user: UserIdentity, janusData: JanusData)(implicit mode: Mode, assetsFinder: AssetsFinder) @import logic.Date @main("Temporary credentials", Some(user), janusData) { <div class="container credentials"> <div class="row"> <h1 class="header orange-text">Credentials</h1> <p> These credentials will expire in @Date.formatInterval(expiry), at <span class="local-date" data-date="@Date.isoDateString(expiry)">@Date.formatTime(expiry)</span>. </p> <div class="editable-aws-profile copy-textarea"> <div class="col s12 m4 l3 push-m8 push-l9"> <a class="copy-text--button copy-text--button__cta waves-effect waves-light btn-large" href="#"> Copy <div class="copy-text__feedback"> <i class="material-icons copy-text--default">content_copy</i> <i class="material-icons copy-text--confirm">done</i> <i class="material-icons copy-text--warn">report_problem</i> </div> </a> @if(accountsCredentials.size == 1) { <div class=""> <div class="aws-profile__input input-field"> <input type="text" value="@accountsCredentials.head._1.authConfigKey" id="aws-profile-id" class="input--slim" /> <label for="first_name">AWS Profile name</label> </div> </div> } </div> <div class="col s12 m8 l9 pull-m4 pull-l3"> <textarea class="textarea--code aws-profile-id" rows="3" wrap="off" readonly autofocus>@logic.ViewHelpers.shellCredentials(accountsCredentials)</textarea> </div> </div> </div> @accountsCredentials match { case (_, credentials) :: Nil => { <div class="row"> <div class="col s12 m7 l6"> <div class="card"> <div class="card-image"> <img src="@assetsFinder.path("images/secret-safe.jpg")" alt="keep it secret, keep it safe" /> </div> <div class="card-content"> <p>These credentials grant access on your behalf. Treat them as you would your password.</p> </div> </div> </div> <div class="col s12 m5 l6"> <ul class="collapsible collapsible--fixed-paragraphs" data-collapsible="accordion"> <li> <div class="collapsible-header"><i class="material-icons">subject</i>Show raw credentials</div> <div class="collapsible-body"> <div> These are your temporary credentials. The normal way to use them is to configure an AWS profile as described above. </div> <form> <div> <label for="access_key">Access Key</label> <input readonly placeholder="Access Key" id="access_key" type="text" value="@credentials.accessKeyId"> </div> <div> <label for="secret_key">Secret Key</label> <input readonly id="secret_key" type="text" value="@credentials.secretAccessKey"> </div> <div> <label for="session_token">Session Token</label> <input readonly id="session_token" type="text" value="@credentials.sessionToken"> </div> </form> </div> </li> <li> <div class="collapsible-header"><i class="material-icons">lock_open</i>Export to shell</div> <div class="collapsible-body copy-textarea"> <div> If you don't use named AWS profiles you can export the credentials on your shell. The normal way to use them is to configure an AWS profile as described above. </div> <div> <a class="copy-text--button copy-text--button__small grey lighten-1" href="#"><i class="material-icons copy-text--default">content_copy</i> copy</a> <i class="material-icons copy-text--confirm">done</i> <i class="material-icons copy-text--warn">report_problem</i> <textarea class="textarea--code" rows="3" wrap="off" readonly> export AWS_ACCESS_KEY_ID=@credentials.accessKeyId export AWS_SECRET_ACCESS_KEY=@credentials.secretAccessKey export AWS_SESSION_TOKEN=@credentials.sessionToken export AWS_SECURITY_TOKEN=@credentials.sessionToken </textarea> </div> </div> </li> </ul> </div> </div> } case _ => { <div class="row"> <div class="col m12 l6 push-l6"> <div class="card grey lighten-3"> <div class="card-content"> <ul class="collection"> @for((account, _) <- accountsCredentials) { <li class="collection-item"> @account.name <span class="right grey-text">@account.authConfigKey</span> <br class="clearfix"> </li> } </ul> <p> To customise profile names or export credentials directly, request accounts separately. </p> </div> </div> </div> <div class="col m12 l6 pull-l6"> <div class="card"> <div class="card-image"> <img src="@assetsFinder.path("images/secret-safe.jpg")" alt="keep it secret, keep it safe" /> </div> <div class="card-content"> <p>These credentials grant access on your behalf. Treat them as you would your password.</p> </div> </div> </div> </div> } } </div> }