Feedback
Did this article resolve your question/issue?

   

Article

Authentication: How to hide the external Identity providers buttons from the backend login page

« Go Back

Information

 
TitleAuthentication: How to hide the external Identity providers buttons from the backend login page
URL NameHow-to-hide-the-external-Identity-providers-buttons-from-the-backend-login-page
Article Number000113606
EnvironmentProduct: Sitefinity
Version: 10.1.6522.0 - 10-2, 11.x, 12.x
OS: All supported OS versions
Database: All supported Microsoft SQL Server versions
Question/Problem Description

How to hide the external Identity providers buttons from the backend login page?
How to hide the Linkedin login button?

Backend Login

 

Steps to Reproduce
Clarifying Information
Note that this customization will remove all external identity providers as an option from the backend login page.
This solution is for the OpenID Authentication protocol.
Error Message
Defect Number
Enhancement Number
Cause
Resolution
1. Create the following structure in the root of the project files:

Structure

2. Paste the following content in the login.html file:
 
<!DOCTYPE html>
<html ng-app="app" ng-controller="LayoutCtrl">
<head>
    <title>{siteName}</title>
    <style>
        img {
            width: 100px;
            height: 100px;
        }

        form {
            margin: 0 auto;
            box-sizing: border-box;
            border: 1px solid #ddd;
            padding: 40px 50px;
            width: 430px;
            min-height: 430px;
            background-color: #fff;
        }
    </style>
    {stylesheets}
    {headScripts}
</head>
<body ng-cloak>
    <div class="sf-authentication-screen">
        <h1 class="sf-logo"></h1>
        <form name="form" method="post" action="{{model.fullLoginUrl}}" id="loginForm" class="sf-login-form -sf-content-centered -sf-center-text">
            <anti-forgery-token token="model.antiForgery"></anti-forgery-token>
            <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAAflBMVEXc7PXd7PXd7fXe7fXe7fbf7vbh7/bh7/fi7/fj8Pfk8Pfl8fjm8fjm8vjn8vjo8vjo8/np8/nq9Pnr9Pns9frt9fru9vrv9vrw9/vx+Pvy+Pvz+fz0+fz1+vz2+vz2+v34+/35+/36/P76/f77/f78/f78/v79/v7+//////+lNPEBAAABIElEQVR4Ae3V2w6aUBSE4dkCYj2gICoHQVRQ5v1fsNpoI0gTa9e+aLK+F/iTuRkopZRSSimlPuP6vmu5EB95c4wtdpYNH5olLNnxxQ5WbNmxhQUBewKIcxv2NK7tsawMZi58czGQNeOAmf215PfKOSCHrJIDSsgqOKCArJQDUshac8AasnwO8CGs4psK0iK+iSDNnNhzMhA3Z88cFiTsSGCD2fPF3sAKk/G3zMCWsOEvTQiLRqvscMhWI/zHvAV6Fh5kTbOWqYMXTso2m0KME1W8q0ODBxPWvKsiBxL85MqnczzGzTg+8+ma+PhHJijZVRdFza4yMPiet6n5kXrj4TuTvOXH2nwi97h/ttaIRjRiKeL9+CselFJKKaWUUj0/AWGBopm+4+PNAAAAAElFTkSuQmCC" alt="Default profile photo" />
            <h2>{{model.resources["loginHeader"]}}</h2>
            <ul class="-sf-clearfix">
                <li ng-show="model.showProviders">
                    <label for="membershipProvider">{{model.resources["provider"]}}</label>
                    <select id="membershipProvider" name="membershipProvider" ng-model="model.selectedProvider" ng-options="p.friendlyName for p in model.providers track by p.name"></select>
                </li>
                <li>
                    <input required name="username" autofocus id="username" type="text" class="sf-input" placeholder='{{model.resources["emailOrUsername"]}}' ng-model="model.username">
                </li>
                <li>
                    <input required id="password" name="password" type="password" class="sf-input" placeholder='{{model.resources["password"]}}' ng-model="model.password" autocomplete="off">
                </li>
                <li class="sf-login-form__remember" ng-show="model.allowRememberMe">
                    <input type="checkbox" id="rememberMe" name="rememberMe" ng-model="model.rememberMe" value="true">
                    <label for="rememberMe">{{model.resources["rememberMe"]}}</label>
                </li>
                <!--TODO: To be uncommented when backend forgot password is implemented
                <li class="sf-login-form__forgot-passowrd">
                    <a id="forgotPassowrd" href="#">{{model.resources["forgotYourPassword"]}}</a>
                </li>-->
            </ul>
            <div class="-sf-txt-failure" ng-show="model.errorMessage">
                {{model.errorMessage}}
            </div>
            <button class="sf-button -sf-action" id="loginButton">{{model.resources["login"]}}</button>
            <!--<div ng-show="model.externalProviders && model.externalProviders.length > 0">
                <h2>{{model.resources["useYorAccount"]}}</h2>
                <ul class="sf-mt--20">
                    <li ng-repeat="provider in model.externalProviders">
                        <a class="sf-button {{provider.linkCssClass}}" href="{{provider.href}}">{{provider.text}}</a>
                    </li>
                </ul>
            </div>-->
        </form>
    </div>
    <script id='modelJson' type='application/json'>
        {model}
    </script>
    {scripts}
</body>
</html>
  • Uncomment the highlighted code above which will result in the default behavior of the backend login page. 
      
3. Build the Project.


 
Workaround
Notes
Last Modified Date7/18/2019 11:53 AM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.