Commit 52c075e1 authored by Filipe de Lima Brito's avatar Filipe de Lima Brito

Adds the SAML service button.

parent 700a17e5
...@@ -225,8 +225,19 @@ class LoginPresenter @Inject constructor( ...@@ -225,8 +225,19 @@ class LoginPresenter @Inject constructor(
customOauthUrl, customOauthUrl,
state, state,
serviceName, serviceName,
getCustomOauthServiceNameColor(service), getServiceNameColor(service),
getCustomOauthButtonColor(service) getServiceButtonColor(service)
)
totalSocialAccountsEnabled++
}
}
getSamlServices(services).let {
for (service in it) {
view.addSamlServiceButton(
getSamlServiceName(service),
getServiceNameColor(service),
getServiceButtonColor(service)
) )
totalSocialAccountsEnabled++ totalSocialAccountsEnabled++
} }
...@@ -324,6 +335,14 @@ class LoginPresenter @Inject constructor( ...@@ -324,6 +335,14 @@ class LoginPresenter @Inject constructor(
}.toString() }.toString()
} }
private fun getSamlServices(listMap: List<Map<String, Any>>): List<Map<String, Any>> {
return listMap.filter { map -> map["name"] == "saml" }
}
private fun getSamlServiceName(service: Map<String, Any>): String {
return service["buttonLabelText"].toString()
}
private fun getCustomOauthServices(listMap: List<Map<String, Any>>): List<Map<String, Any>> { private fun getCustomOauthServices(listMap: List<Map<String, Any>>): List<Map<String, Any>> {
return listMap.filter { map -> map["custom"] == true } return listMap.filter { map -> map["custom"] == true }
} }
...@@ -348,11 +367,11 @@ class LoginPresenter @Inject constructor( ...@@ -348,11 +367,11 @@ class LoginPresenter @Inject constructor(
return service["scope"].toString() return service["scope"].toString()
} }
private fun getCustomOauthButtonColor(service: Map<String, Any>): Int { private fun getServiceButtonColor(service: Map<String, Any>): Int {
return service["buttonColor"].toString().parseColor() return service["buttonColor"].toString().parseColor()
} }
private fun getCustomOauthServiceNameColor(service: Map<String, Any>): Int { private fun getServiceNameColor(service: Map<String, Any>): Int {
return service["buttonLabelColor"].toString().parseColor() return service["buttonLabelColor"].toString().parseColor()
} }
......
...@@ -74,7 +74,7 @@ interface LoginView : LoadingView, MessageView { ...@@ -74,7 +74,7 @@ interface LoginView : LoadingView, MessageView {
* Enables and shows the oauth view if there is login via social accounts enabled by the server settings. * Enables and shows the oauth view if there is login via social accounts enabled by the server settings.
* *
* REMARK: We must show at maximum *three* social accounts views ([enableLoginByFacebook], [enableLoginByGithub], [enableLoginByGoogle], * REMARK: We must show at maximum *three* social accounts views ([enableLoginByFacebook], [enableLoginByGithub], [enableLoginByGoogle],
* [enableLoginByLinkedin], [enableLoginByMeteor], [enableLoginByTwitter], [enableLoginByGitlab] or [addCustomOauthServiceButton]) for the oauth view. * [enableLoginByLinkedin], [enableLoginByMeteor], [enableLoginByTwitter], [enableLoginByGitlab], [addCustomOauthServiceButton] or [addSamlServiceButton]) for the oauth view.
* If the possibility of login via social accounts exceeds 3 different ways we should set up the FAB ([setupFabListener]) to show the remaining view(s). * If the possibility of login via social accounts exceeds 3 different ways we should set up the FAB ([setupFabListener]) to show the remaining view(s).
*/ */
fun enableOauthView() fun enableOauthView()
...@@ -195,6 +195,16 @@ interface LoginView : LoadingView, MessageView { ...@@ -195,6 +195,16 @@ interface LoginView : LoadingView, MessageView {
buttonColor: Int buttonColor: Int
) )
/**
* Adds a SAML button in the oauth view.
*
* @serviceName The custom OAuth service name.
* @serviceNameColor The custom OAuth service name color (just stylizing).
* @buttonColor The color of the custom OAuth button (just stylizing).
* @see [enableOauthView]
*/
fun addSamlServiceButton(serviceName: String, serviceNameColor: Int, buttonColor: Int)
/** /**
* Setups the FloatingActionButton to show more social accounts views (expanding the oauth view interface to show the remaining view(s)). * Setups the FloatingActionButton to show more social accounts views (expanding the oauth view interface to show the remaining view(s)).
*/ */
......
...@@ -385,7 +385,7 @@ class LoginFragment : Fragment(), LoginView { ...@@ -385,7 +385,7 @@ class LoginFragment : Fragment(), LoginView {
buttonColor: Int buttonColor: Int
) { ) {
ui { activity -> ui { activity ->
val button = getCustomOauthButton(serviceName, serviceNameColor, buttonColor) val button = getCustomServiceButton(serviceName, serviceNameColor, buttonColor)
social_accounts_container.addView(button) social_accounts_container.addView(button)
button.setOnClickListener { button.setOnClickListener {
...@@ -398,6 +398,26 @@ class LoginFragment : Fragment(), LoginView { ...@@ -398,6 +398,26 @@ class LoginFragment : Fragment(), LoginView {
} }
} }
override fun addSamlServiceButton(
serviceName: String,
serviceNameColor: Int,
buttonColor: Int
) {
ui { activity ->
val button = getCustomServiceButton(serviceName, serviceNameColor, buttonColor)
social_accounts_container.addView(button)
// TODO: Add the button listener with the SAML URL.
button.setOnClickListener {
// startActivityForResult(
// activity.oauthWebViewIntent(customOauthUrl, state),
// REQUEST_CODE_FOR_OAUTH
// )
activity.overridePendingTransition(R.anim.slide_up, R.anim.hold)
}
}
}
override fun setupFabListener() { override fun setupFabListener() {
ui { ui {
button_fab.isVisible = true button_fab.isVisible = true
...@@ -496,9 +516,9 @@ class LoginFragment : Fragment(), LoginView { ...@@ -496,9 +516,9 @@ class LoginFragment : Fragment(), LoginView {
} }
/** /**
* Gets a stylized custom OAuth button. * Gets a stylized custom service button.
*/ */
private fun getCustomOauthButton( private fun getCustomServiceButton(
buttonText: String, buttonText: String,
buttonTextColor: Int, buttonTextColor: Int,
buttonBgColor: Int buttonBgColor: Int
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment