Merge branch '64-login-functionality-with-retrofit' into 'master'
Resolve "Login functionality with Retrofit" Closes #64 See merge request marcel.schwarz/2020ss-qbc-geofence-timetracking!41
This commit is contained in:
commit
3c42d55881
@ -45,4 +45,7 @@ dependencies {
|
||||
implementation 'androidx.navigation:navigation-ui-ktx:2.2.2'
|
||||
implementation "android.arch.navigation:navigation-fragment-ktx:2.2.2"
|
||||
implementation "android.arch.navigation:navigation-ui-ktx:2.2.2"
|
||||
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="de.hft.geotracker">
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
@ -8,8 +9,10 @@
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:usesCleartextTraffic="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity android:name=".Register"></activity>
|
||||
|
||||
<activity android:name=".Register" />
|
||||
<activity
|
||||
android:name=".Settings"
|
||||
android:label="@string/title_activity_settings" />
|
||||
|
@ -0,0 +1,12 @@
|
||||
package de.hft.geotracker
|
||||
|
||||
import retrofit2.Call
|
||||
import retrofit2.http.*
|
||||
|
||||
interface GeofenceService {
|
||||
@POST("/login")
|
||||
fun login(@Body login_data : ValuesUserLogin) : Call<Void>
|
||||
|
||||
|
||||
|
||||
}
|
3
android/app/src/main/java/de/hft/geotracker/JWToken.kt
Normal file
3
android/app/src/main/java/de/hft/geotracker/JWToken.kt
Normal file
@ -0,0 +1,3 @@
|
||||
package de.hft.geotracker
|
||||
|
||||
data class JWToken (var token : String)
|
@ -4,7 +4,13 @@ import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import retrofit2.Call
|
||||
import retrofit2.Callback
|
||||
import retrofit2.Response
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
|
||||
/**
|
||||
* A simple [Fragment] subclass.
|
||||
@ -12,11 +18,22 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
class Login : AppCompatActivity() {
|
||||
lateinit var login : TextView
|
||||
lateinit var reg : TextView
|
||||
lateinit var service : GeofenceService
|
||||
lateinit var token : JWToken
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_login)
|
||||
|
||||
val retrofit = Retrofit.Builder()
|
||||
.baseUrl("http://plesk.icaotix.de:5000")
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build()
|
||||
service = retrofit.create(GeofenceService::class.java)
|
||||
|
||||
login = findViewById(R.id.button_create_account)
|
||||
login.setOnClickListener {
|
||||
intent = Intent(this, MainActivity::class.java)
|
||||
login()
|
||||
}
|
||||
reg = findViewById(R.id.button_register)
|
||||
@ -31,7 +48,35 @@ class Login : AppCompatActivity() {
|
||||
}
|
||||
|
||||
private fun login() {
|
||||
val intent = Intent(this, MainActivity::class.java)
|
||||
startActivity(intent)
|
||||
val name = findViewById<TextView>(R.id.setting_input_username).text.toString()
|
||||
val pswd = findViewById<TextView>(R.id.input_password).text.toString()
|
||||
var call= service.login(ValuesUserLogin(name, pswd))
|
||||
|
||||
call.enqueue(object : Callback<Void> {
|
||||
override fun onResponse(call: Call<Void>?, response: Response<Void>?) {
|
||||
if(response != null && response.isSuccessful) {
|
||||
var headers = response.headers()
|
||||
var authentication = headers.get("Authorization")
|
||||
|
||||
token = JWToken(authentication)
|
||||
println(response.code())
|
||||
println(token.token)
|
||||
|
||||
startActivity(intent)
|
||||
} else {
|
||||
if (response != null) {
|
||||
println(response.code())
|
||||
Toast.makeText(this@Login, "Wrong Username or Password!", Toast.LENGTH_LONG).show()
|
||||
} else {
|
||||
println("Response is null")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFailure(call: Call<Void>?, t: Throwable?) {
|
||||
println("Error: ${t.toString()}")
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,12 @@
|
||||
package de.hft.geotracker
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
class ValuesUserLogin (name : String, pswd : String) {
|
||||
|
||||
@SerializedName("username")
|
||||
var username = name
|
||||
@SerializedName("password")
|
||||
var password = pswd
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user