diff --git a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/HomeFragment.kt b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/HomeFragment.kt index ffc60c1..f9045fc 100644 --- a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/HomeFragment.kt +++ b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/HomeFragment.kt @@ -20,11 +20,14 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.koushikdutta.ion.Ion import com.tarkvaraprojekt.mobileauthapp.NFC.Comms import com.tarkvaraprojekt.mobileauthapp.databinding.FragmentHomeBinding import com.tarkvaraprojekt.mobileauthapp.model.ParametersViewModel import com.tarkvaraprojekt.mobileauthapp.model.SmartCardViewModel import java.lang.Exception +import java.lang.RuntimeException +import java.net.URL /** * HomeFragment is only shown to the user when then the user launches the application. When the application @@ -104,15 +107,39 @@ class HomeFragment : Fragment() { intentParams.setChallenge(requireActivity().intent.getStringExtra("challenge")!!) intentParams.setAuthUrl(requireActivity().intent.getStringExtra("authUrl")!!) intentParams.setOrigin(requireActivity().intent.getStringExtra("originUrl")!!) + goToTheNextFragment(mobile) } else { //Website + /* var challenge = requireActivity().intent.data!!.getQueryParameter("challenge")!! // TODO: Since due to encoding plus gets converted to space, temporary solution is to replace it back. challenge = challenge.replace(" ", "+") intentParams.setChallenge(challenge) intentParams.setAuthUrl(requireActivity().intent.data!!.getQueryParameter("authUrl")!!) intentParams.setOrigin(requireActivity().intent.data!!.getQueryParameter("originUrl")!!) + */ + val getAuthChallengeUrl = requireActivity().intent.data!!.getQueryParameter("getAuthChallengeUrl")!! + val postAuthTokenUrl = requireActivity().intent.data!!.getQueryParameter("postAuthTokenUrl")!! + val headers = requireActivity().intent.data!!.getQueryParameter("headers")!! + intentParams.setAuthUrl(postAuthTokenUrl) + intentParams.setOrigin("https://" + URL(getAuthChallengeUrl).host) + intentParams.setHeaders(headers) + Ion.getDefault(activity).conscryptMiddleware.enable(false) + Ion.with(activity) + .load(getAuthChallengeUrl) + .asJsonObject() + .setCallback { _, result -> + try { + // Get data from the result and call launchAuth method + val challenge = result.asJsonObject["nonce"].toString().replace("\"", "") + intentParams.setChallenge(challenge) + goToTheNextFragment(mobile) + } catch (e: Exception) { + Log.i("GETrequest", "was unsuccessful") + throw RuntimeException() + } + } + } - goToTheNextFragment(mobile) } catch (e: Exception) { // There was a problem with parameters, which means that authentication is not possible. // In that case we will cancel the authentication immediately as it would be waste of the user's time to carry on diff --git a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/model/ParametersViewModel.kt b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/model/ParametersViewModel.kt index dbac034..64553f9 100644 --- a/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/model/ParametersViewModel.kt +++ b/MobileAuthApp/app/src/main/java/com/tarkvaraprojekt/mobileauthapp/model/ParametersViewModel.kt @@ -16,6 +16,9 @@ class ParametersViewModel: ViewModel() { private var _origin: String = "" val origin get() = _origin + private var _headers: String = "" + val headers get() =_headers + fun setChallenge(newChallenge: String) { _challenge = newChallenge } @@ -31,4 +34,8 @@ class ParametersViewModel: ViewModel() { fun setOrigin(newOrigin: String) { _origin = newOrigin } + + fun setHeaders(newHeaders: String) { + _headers = newHeaders + } } \ No newline at end of file diff --git a/TestMobileApp/app/src/main/java/com/example/testmobileapp/MainActivity.kt b/TestMobileApp/app/src/main/java/com/example/testmobileapp/MainActivity.kt index a93fdbc..3ee2869 100644 --- a/TestMobileApp/app/src/main/java/com/example/testmobileapp/MainActivity.kt +++ b/TestMobileApp/app/src/main/java/com/example/testmobileapp/MainActivity.kt @@ -11,6 +11,7 @@ import androidx.activity.result.contract.ActivityResultContracts import com.example.testmobileapp.databinding.ActivityMainBinding import com.koushikdutta.ion.Ion import org.json.JSONObject +import java.net.URL /** * Base url where the requests should be made. Add yours here. It must use https. @@ -31,7 +32,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) - + Log.i("myLoggingStuff", URL("https://www.google.ee/?hl=et").host.toString()) authLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { response -> if (response.resultCode == Activity.RESULT_OK) { binding.loginTextView.text = getString(R.string.auth_success)