diff --git a/awx/ui/client/src/login/loginModal.block.less b/awx/ui/client/src/login/loginModal.block.less
index daac3b8152..a865a58085 100644
--- a/awx/ui/client/src/login/loginModal.block.less
+++ b/awx/ui/client/src/login/loginModal.block.less
@@ -21,3 +21,17 @@
.LoginModal-labelAsterisk:before {
margin-right: -2px;
}
+
+.LoginModal-footer {
+ display: flex;
+ align-items: center;
+}
+
+.LoginModal-footerBlock {
+ flex: 1 0 auto;
+ text-align: left;
+}
+
+.LoginModal-footerBlock--submit {
+ text-align: right;
+}
diff --git a/awx/ui/client/src/login/loginModal.partial.html b/awx/ui/client/src/login/loginModal.partial.html
index c210a92616..5224c89098 100644
--- a/awx/ui/client/src/login/loginModal.partial.html
+++ b/awx/ui/client/src/login/loginModal.partial.html
@@ -63,11 +63,17 @@
Notice
{{ customLoginInfo | sanitize }}
-
diff --git a/awx/ui/client/src/login/main.js b/awx/ui/client/src/login/main.js
index fe2e2273fe..a309b2047c 100644
--- a/awx/ui/client/src/login/main.js
+++ b/awx/ui/client/src/login/main.js
@@ -11,6 +11,7 @@ import timer from './timer.factory';
import loginRoute from './login.route';
import logoutRoute from './logout.route';
import loginModalDirective from './loginModal.directive';
+import thirdPartySignOnDirective from './thirdPartySignOn.directive';
export default
angular.module('login', [
@@ -20,6 +21,7 @@ export default
.factory('IsAdmin', isAdmin)
.factory('Timer', timer)
.directive('loginModal', loginModalDirective)
+ .directive('thirdPartySignOn', thirdPartySignOnDirective)
.config(['$routeProvider', function($routeProvider) {
var url = loginRoute.route;
delete loginRoute.route;
diff --git a/awx/ui/client/src/login/thirdPartySignOn.block.less b/awx/ui/client/src/login/thirdPartySignOn.block.less
new file mode 100644
index 0000000000..fcf31cde10
--- /dev/null
+++ b/awx/ui/client/src/login/thirdPartySignOn.block.less
@@ -0,0 +1,35 @@
+/** @define ThirdPartySignOn */
+
+.ThirdPartySignOn {
+ display: flex;
+ align-items: center;
+}
+
+.ThirdPartySignOn-label {
+ flex: initial;
+ font-weight: bold;
+ color: #717680;
+}
+
+.ThirdPartySignOn-item {
+ margin-left: 10px;
+}
+
+.ThirdPartySignOn-button {
+ flex: 1 0 auto;
+ height: 30px;
+ width: 30px;
+ border-radius: 50%;
+ color: #C1C1C1;
+ background-color: #fff;
+ border: 0;
+ padding: 0;
+}
+
+.ThirdPartySignOn-button:hover {
+ color: #717680;
+}
+
+.ThirdPartySignOn-icon {
+ font-size: 35px;
+}
diff --git a/awx/ui/client/src/login/thirdPartySignOn.directive.js b/awx/ui/client/src/login/thirdPartySignOn.directive.js
new file mode 100644
index 0000000000..b4952ed91e
--- /dev/null
+++ b/awx/ui/client/src/login/thirdPartySignOn.directive.js
@@ -0,0 +1,44 @@
+/*************************************************
+ * Copyright (c) 2015 Ansible, Inc.
+ *
+ * All Rights Reserved
+ *************************************************/
+
+/* jshint unused: vars */
+export default
+ [ 'templateUrl',
+ function(templateUrl) {
+ return {
+ restrict: 'E',
+ scope: true,
+ // controller: authenticationController,
+ templateUrl: templateUrl('login/thirdPartySignOn'),
+ link: function(scope, element, attrs) {
+ // these vars will be set programatically once
+ // api stuff lands
+ scope.loginItems = [
+ {
+ type: "foo",
+ icon: "fa-github",
+ link: "https://google.com",
+ tooltip: "Login in via Google"
+ },
+ {
+ type: "foo",
+ icon: "fa-github",
+ link: "https://google.com",
+ tooltip: "Login in via Github"
+ },
+ {
+ type: "foo",
+ icon: "fa-github",
+ link: "https://google.com",
+ tooltip: "Login in via SAML"
+ }
+ ]
+
+ scope.thirdPartyLoginSupported = true;
+ }
+ };
+ }
+ ];
diff --git a/awx/ui/client/src/login/thirdPartySignOn.partial.html b/awx/ui/client/src/login/thirdPartySignOn.partial.html
new file mode 100644
index 0000000000..8bf8928bd9
--- /dev/null
+++ b/awx/ui/client/src/login/thirdPartySignOn.partial.html
@@ -0,0 +1,10 @@
+
+
+ Sign In With
+
+
+
+
+