1515angular . module ( 'mm.core.login' )
1616
1717. constant ( 'mmLoginSSOCode' , 2 ) // This code is returned by local_mobile Moodle plugin if SSO in browser is required.
18+ . constant ( 'mmLoginSSOInAppCode' , 3 )
1819. constant ( 'mmLoginLaunchSiteURL' , 'mmLoginLaunchSiteURL' )
1920. constant ( 'mmLoginLaunchPassport' , 'mmLoginLaunchPassport' )
2021
@@ -25,8 +26,9 @@ angular.module('mm.core.login')
2526 * @ngdoc service
2627 * @name $mmLoginHelper
2728 */
28- . factory ( '$mmLoginHelper' , function ( $q , $log , $mmConfig , mmLoginSSOCode , mmLoginLaunchSiteURL , mmLoginLaunchPassport ,
29- md5 , $mmSite , $mmSitesManager , $mmLang , $mmUtil , $state , $mmAddonManager , mmCoreConfigConstants ) {
29+ . factory ( '$mmLoginHelper' , function ( $q , $log , $mmConfig , mmLoginSSOCode , mmLoginSSOInAppCode , mmLoginLaunchSiteURL ,
30+ mmLoginLaunchPassport , md5 , $mmSite , $mmSitesManager , $mmLang , $mmUtil , $state , $mmAddonManager ,
31+ $translate , mmCoreConfigConstants ) {
3032
3133 $log = $log . getInstance ( '$mmLoginHelper' ) ;
3234
@@ -93,7 +95,7 @@ angular.module('mm.core.login')
9395 * @return {Boolean } True if SSO login is needed, false othwerise.
9496 */
9597 self . isSSOLoginNeeded = function ( code ) {
96- return code == mmLoginSSOCode ;
98+ return code == mmLoginSSOCode || code == mmLoginSSOInAppCode ;
9799 } ;
98100
99101 /**
@@ -116,8 +118,9 @@ angular.module('mm.core.login')
116118 * @ngdoc method
117119 * @name $mmLoginHelper#openBrowserForSSOLogin
118120 * @param {String } siteurl URL of the site where the SSO login will be performed.
121+ * @param {Number } typeOfLogin mmLoginSSOCode or mmLoginSSOInAppCode
119122 */
120- self . openBrowserForSSOLogin = function ( siteurl ) {
123+ self . openBrowserForSSOLogin = function ( siteurl , typeOfLogin ) {
121124 var passport = Math . random ( ) * 1000 ;
122125 var loginurl = siteurl + "/local/mobile/launch.php?service=" + mmCoreConfigConstants . wsextservice ;
123126 loginurl += "&passport=" + passport ;
@@ -128,9 +131,19 @@ angular.module('mm.core.login')
128131 $mmConfig . set ( mmLoginLaunchSiteURL , siteurl ) ;
129132 $mmConfig . set ( mmLoginLaunchPassport , passport ) ;
130133
131- $mmUtil . openInBrowser ( loginurl ) ;
132- if ( navigator . app ) {
133- navigator . app . exitApp ( ) ;
134+ if ( typeOfLogin == mmLoginSSOInAppCode ) {
135+ $translate ( 'mm.login.cancel' ) . then ( function ( cancelStr ) {
136+ var options = {
137+ clearsessioncache : 'yes' , // Clear the session cache to allow for multiple logins.
138+ closebuttoncaption : cancelStr ,
139+ } ;
140+ $mmUtil . openInApp ( loginurl , options ) ;
141+ } ) ;
142+ } else {
143+ $mmUtil . openInBrowser ( loginurl ) ;
144+ if ( navigator . app ) {
145+ navigator . app . exitApp ( ) ;
146+ }
134147 }
135148 } ;
136149
0 commit comments