diff --git a/app/src/main/java/de/tu_darmstadt/seemoo/LARS/data/LoginDataSource.kt b/app/src/main/java/de/tu_darmstadt/seemoo/LARS/data/LoginDataSource.kt index 9c727f4..237efdb 100644 --- a/app/src/main/java/de/tu_darmstadt/seemoo/LARS/data/LoginDataSource.kt +++ b/app/src/main/java/de/tu_darmstadt/seemoo/LARS/data/LoginDataSource.kt @@ -18,14 +18,16 @@ import okhttp3.Response import java.io.IOException private const val API_KEY_USERNAME = "name" +private const val API_KEY_ERROR = "error" +private const val API_KEY_USER_ID = "id" /** * Class that handles authentication w/ login credentials and retrieves user information. */ class LoginDataSource { - fun login(data: LoginData, liveData: MutableLiveData>) { - val request = Utils.buildAPI(data.apiBackend, "users/${data.userID}", data.apiToken).build() - getHttpBase(data.apiToken).newCall(request).enqueue(object : Callback { + fun login(backend: String, token: String, liveData: MutableLiveData>) { + val request = Utils.buildAPI(backend, "users/me", token).build() + getHttpBase(token).newCall(request).enqueue(object : Callback { override fun onFailure(call: Call, e: IOException) { Log.w(this@LoginDataSource::class.java.name, "onFailure $e") liveData.postValue(Result.Error(e)) @@ -40,7 +42,11 @@ class LoginDataSource { val answer = JsonParser.parseString(bodyString) if (answer.isJsonObject) { val jsonObj = answer.asJsonObject - if (jsonObj.has(API_KEY_USERNAME)) { + if (jsonObj.has(API_KEY_ERROR)) { + // {"error":"Unauthorized."} + Result.Error(InvalidResponseException(code, it.toString())) + } else if (jsonObj.has(API_KEY_USERNAME) && jsonObj.has(API_KEY_USER_ID)) { + val data = LoginData(jsonObj.get(API_KEY_USER_ID).asInt,token,backend) Result.Success( LoggedInUserView( jsonObj.get(API_KEY_USERNAME).asString, diff --git a/app/src/main/java/de/tu_darmstadt/seemoo/LARS/ui/login/LoginActivity.kt b/app/src/main/java/de/tu_darmstadt/seemoo/LARS/ui/login/LoginActivity.kt index da4f33d..1df9425 100644 --- a/app/src/main/java/de/tu_darmstadt/seemoo/LARS/ui/login/LoginActivity.kt +++ b/app/src/main/java/de/tu_darmstadt/seemoo/LARS/ui/login/LoginActivity.kt @@ -7,16 +7,12 @@ import android.text.Editable import android.text.TextWatcher import android.util.Log import android.view.View -import android.view.inputmethod.EditorInfo -import android.widget.Button import android.widget.EditText -import android.widget.ProgressBar import android.widget.Toast import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider -import com.google.android.material.textfield.TextInputEditText import com.google.gson.Gson import com.google.gson.JsonSyntaxException import com.google.zxing.integration.android.IntentIntegrator @@ -24,41 +20,32 @@ import de.tu_darmstadt.seemoo.LARS.MainActivity import de.tu_darmstadt.seemoo.LARS.R import de.tu_darmstadt.seemoo.LARS.Utils import de.tu_darmstadt.seemoo.LARS.data.model.LoginData +import de.tu_darmstadt.seemoo.LARS.databinding.ActivityLoginBinding class LoginActivity : AppCompatActivity() { private lateinit var loginViewModel: LoginViewModel + private lateinit var binding: ActivityLoginBinding @SuppressLint("ApplySharedPref") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - - setContentView(R.layout.activity_login) - - val apiToken = findViewById(R.id.apiToken) - val apiEndpoint = findViewById(R.id.apiEndpoint) - val userID = findViewById(R.id.userID) - val login = findViewById