Skip to content

Commit e8e6e11

Browse files
authored
Merge pull request #1 from priyanshu-simformsolutions/feature/Authentication
UNT-T21169 - Feature Add Authentication
2 parents 1871571 + 9c56e19 commit e8e6e11

File tree

11 files changed

+293
-7
lines changed

11 files changed

+293
-7
lines changed

app/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ android {
2929
kotlinOptions {
3030
jvmTarget = '1.8'
3131
}
32+
buildFeatures {
33+
viewBinding true
34+
}
3235
}
3336

3437
dependencies {

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@
1313
android:supportsRtl="true"
1414
android:theme="@style/Theme.GitExcercise"
1515
tools:targetApi="31">
16+
<activity
17+
android:name=".ForgotPasswordActivity"
18+
android:exported="false" />
19+
<activity
20+
android:name=".RegistrationActivity"
21+
android:exported="false" />
22+
<activity
23+
android:name=".LoginActivity"
24+
android:exported="false" />
1625
<activity
1726
android:name=".MainActivity"
1827
android:exported="true">
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package simform.gitexcercise.android
2+
3+
import android.os.Bundle
4+
import android.widget.Toast
5+
import androidx.appcompat.app.AppCompatActivity
6+
import simform.gitexcercise.android.databinding.ActivityForgotPasswordBinding
7+
8+
class ForgotPasswordActivity : AppCompatActivity() {
9+
10+
private lateinit var binding: ActivityForgotPasswordBinding
11+
12+
override fun onCreate(savedInstanceState: Bundle?) {
13+
super.onCreate(savedInstanceState)
14+
binding = ActivityForgotPasswordBinding.inflate(layoutInflater)
15+
setContentView(binding.root)
16+
setupOnClicks()
17+
}
18+
19+
private fun setupOnClicks() = with(binding) {
20+
btnSendOtp.setOnClickListener {
21+
Toast.makeText(
22+
this@ForgotPasswordActivity,
23+
getString(R.string.msg_otp_sent),
24+
Toast.LENGTH_SHORT
25+
).show()
26+
}
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package simform.gitexcercise.android
2+
3+
import android.os.Bundle
4+
import android.widget.Toast
5+
import androidx.appcompat.app.AppCompatActivity
6+
import simform.gitexcercise.android.databinding.ActivityLoginBinding
7+
8+
class LoginActivity : AppCompatActivity() {
9+
10+
private lateinit var binding: ActivityLoginBinding
11+
12+
override fun onCreate(savedInstanceState: Bundle?) {
13+
super.onCreate(savedInstanceState)
14+
binding = ActivityLoginBinding.inflate(layoutInflater)
15+
setContentView(binding.root)
16+
setupOnClicks()
17+
}
18+
19+
private fun setupOnClicks() = with(binding) {
20+
btnLogin.setOnClickListener {
21+
Toast.makeText(
22+
this@LoginActivity,
23+
getString(R.string.msg_login_successfully),
24+
Toast.LENGTH_SHORT
25+
).show()
26+
}
27+
}
28+
}
Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
11
package simform.gitexcercise.android
22

3-
import androidx.appcompat.app.AppCompatActivity
3+
import android.content.Intent
44
import android.os.Bundle
5+
import androidx.appcompat.app.AppCompatActivity
6+
import simform.gitexcercise.android.databinding.ActivityMainBinding
57

68
class MainActivity : AppCompatActivity() {
9+
10+
private lateinit var binding: ActivityMainBinding
11+
712
override fun onCreate(savedInstanceState: Bundle?) {
813
super.onCreate(savedInstanceState)
9-
setContentView(R.layout.activity_main)
14+
binding = ActivityMainBinding.inflate(layoutInflater)
15+
setContentView(binding.root)
16+
setupOnClicks()
17+
}
18+
19+
private fun setupOnClicks() = with(binding) {
20+
btnLoginScreen.setOnClickListener {
21+
startActivity(Intent(this@MainActivity, LoginActivity::class.java))
22+
}
23+
btnRegistrationScreen.setOnClickListener {
24+
startActivity(Intent(this@MainActivity, RegistrationActivity::class.java))
25+
}
1026
}
1127
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package simform.gitexcercise.android
2+
3+
import android.os.Bundle
4+
import android.widget.Toast
5+
import androidx.appcompat.app.AppCompatActivity
6+
import simform.gitexcercise.android.databinding.ActivityRegistrationBinding
7+
8+
class RegistrationActivity : AppCompatActivity() {
9+
10+
private lateinit var binding: ActivityRegistrationBinding
11+
12+
override fun onCreate(savedInstanceState: Bundle?) {
13+
super.onCreate(savedInstanceState)
14+
binding = ActivityRegistrationBinding.inflate(layoutInflater)
15+
setContentView(binding.root)
16+
setupOnClicks()
17+
}
18+
19+
private fun setupOnClicks() = with(binding) {
20+
btnRegistration.setOnClickListener {
21+
Toast.makeText(
22+
this@RegistrationActivity,
23+
getString(R.string.msg_registered_successfully),
24+
Toast.LENGTH_SHORT
25+
).show()
26+
}
27+
}
28+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
tools:context=".ForgotPasswordActivity">
8+
9+
<EditText
10+
android:id="@+id/etEmail"
11+
android:layout_width="match_parent"
12+
android:layout_height="wrap_content"
13+
android:layout_marginHorizontal="8dp"
14+
android:autofillHints="emailAddress"
15+
android:hint="@string/hint_enter_email"
16+
android:inputType="textEmailAddress"
17+
app:layout_constraintBottom_toTopOf="@id/btnSendOtp"
18+
app:layout_constraintEnd_toEndOf="parent"
19+
app:layout_constraintStart_toStartOf="parent"
20+
app:layout_constraintTop_toTopOf="parent"
21+
app:layout_constraintVertical_chainStyle="packed" />
22+
23+
<Button
24+
android:id="@+id/btnSendOtp"
25+
android:layout_width="wrap_content"
26+
android:layout_height="wrap_content"
27+
android:text="@string/action_send_otp"
28+
app:layout_constraintBottom_toBottomOf="parent"
29+
app:layout_constraintEnd_toEndOf="@+id/etEmail"
30+
app:layout_constraintStart_toStartOf="@+id/etEmail"
31+
app:layout_constraintTop_toBottomOf="@+id/etEmail"
32+
app:layout_goneMarginTop="16dp" />
33+
34+
</androidx.constraintlayout.widget.ConstraintLayout>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
tools:context=".LoginActivity">
8+
9+
<EditText
10+
android:id="@+id/etEmail"
11+
android:layout_width="match_parent"
12+
android:layout_height="wrap_content"
13+
android:layout_marginHorizontal="8dp"
14+
android:autofillHints="emailAddress"
15+
android:hint="@string/hint_enter_email"
16+
android:inputType="textEmailAddress"
17+
app:layout_constraintBottom_toTopOf="@id/etPassword"
18+
app:layout_constraintEnd_toEndOf="parent"
19+
app:layout_constraintStart_toStartOf="parent"
20+
app:layout_constraintTop_toTopOf="parent"
21+
app:layout_constraintVertical_chainStyle="packed" />
22+
23+
<EditText
24+
android:id="@+id/etPassword"
25+
android:layout_width="0dp"
26+
android:layout_height="wrap_content"
27+
android:layout_marginVertical="8dp"
28+
android:autofillHints="password"
29+
android:hint="@string/hint_enter_password"
30+
android:inputType="textPassword"
31+
app:layout_constraintBottom_toTopOf="@id/tvForgotPassword"
32+
app:layout_constraintEnd_toEndOf="@+id/etEmail"
33+
app:layout_constraintStart_toStartOf="@+id/etEmail"
34+
app:layout_constraintTop_toBottomOf="@+id/etEmail" />
35+
36+
<TextView
37+
android:id="@+id/tvForgotPassword"
38+
android:layout_width="wrap_content"
39+
android:layout_height="wrap_content"
40+
android:layout_marginVertical="16dp"
41+
android:text="@string/action_forgot_password"
42+
app:layout_constraintBottom_toTopOf="@+id/btnLogin"
43+
app:layout_constraintEnd_toEndOf="@+id/etPassword"
44+
app:layout_constraintTop_toBottomOf="@+id/etPassword" />
45+
46+
<Button
47+
android:id="@+id/btnLogin"
48+
android:layout_width="wrap_content"
49+
android:layout_height="wrap_content"
50+
android:text="@string/action_login"
51+
app:layout_constraintBottom_toBottomOf="parent"
52+
app:layout_constraintEnd_toEndOf="@+id/etPassword"
53+
app:layout_constraintStart_toStartOf="@+id/etPassword"
54+
app:layout_constraintTop_toBottomOf="@+id/tvForgotPassword" />
55+
56+
</androidx.constraintlayout.widget.ConstraintLayout>

app/src/main/res/layout/activity_main.xml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,25 @@
66
android:layout_height="match_parent"
77
tools:context=".MainActivity">
88

9-
<TextView
9+
<Button
10+
android:id="@+id/btnLoginScreen"
1011
android:layout_width="wrap_content"
1112
android:layout_height="wrap_content"
12-
android:text="Hello World!"
13-
app:layout_constraintBottom_toBottomOf="parent"
13+
android:text="@string/action_login_screen"
14+
app:layout_constraintBottom_toTopOf="@id/btnRegistrationScreen"
1415
app:layout_constraintEnd_toEndOf="parent"
1516
app:layout_constraintStart_toStartOf="parent"
16-
app:layout_constraintTop_toTopOf="parent" />
17+
app:layout_constraintTop_toTopOf="parent"
18+
app:layout_constraintVertical_chainStyle="packed" />
19+
20+
<Button
21+
android:id="@+id/btnRegistrationScreen"
22+
android:layout_width="wrap_content"
23+
android:layout_height="wrap_content"
24+
android:text="@string/action_registration_screen"
25+
app:layout_constraintBottom_toBottomOf="parent"
26+
app:layout_constraintEnd_toEndOf="@id/btnLoginScreen"
27+
app:layout_constraintStart_toStartOf="@id/btnLoginScreen"
28+
app:layout_constraintTop_toBottomOf="@id/btnLoginScreen" />
1729

1830
</androidx.constraintlayout.widget.ConstraintLayout>
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
tools:context=".RegistrationActivity">
8+
9+
<EditText
10+
android:id="@+id/etName"
11+
android:layout_width="0dp"
12+
android:layout_height="wrap_content"
13+
android:layout_marginHorizontal="16dp"
14+
android:autofillHints="name"
15+
android:hint="@string/hint_enter_name"
16+
android:inputType="textEmailAddress"
17+
app:layout_constraintBottom_toTopOf="@id/etEmail"
18+
app:layout_constraintEnd_toEndOf="parent"
19+
app:layout_constraintStart_toStartOf="parent"
20+
app:layout_constraintTop_toTopOf="parent"
21+
app:layout_constraintVertical_chainStyle="packed" />
22+
23+
<EditText
24+
android:id="@+id/etEmail"
25+
android:layout_width="0dp"
26+
android:layout_height="wrap_content"
27+
android:layout_marginTop="8dp"
28+
android:autofillHints="emailAddress"
29+
android:hint="@string/hint_enter_email"
30+
android:inputType="textEmailAddress"
31+
app:layout_constraintBottom_toTopOf="@id/etPassword"
32+
app:layout_constraintEnd_toEndOf="@id/etName"
33+
app:layout_constraintStart_toStartOf="@id/etName"
34+
app:layout_constraintTop_toBottomOf="@id/etName" />
35+
36+
<EditText
37+
android:id="@+id/etPassword"
38+
android:layout_width="0dp"
39+
android:layout_height="wrap_content"
40+
android:layout_marginTop="8dp"
41+
android:autofillHints="password"
42+
android:hint="@string/hint_enter_password"
43+
android:inputType="textPassword"
44+
app:layout_constraintBottom_toTopOf="@id/btnRegistration"
45+
app:layout_constraintEnd_toEndOf="@+id/etEmail"
46+
app:layout_constraintStart_toStartOf="@+id/etEmail"
47+
app:layout_constraintTop_toBottomOf="@+id/etEmail" />
48+
49+
<Button
50+
android:id="@+id/btnRegistration"
51+
android:layout_width="wrap_content"
52+
android:layout_height="wrap_content"
53+
android:layout_marginTop="8dp"
54+
android:text="@string/action_registration"
55+
app:layout_constraintBottom_toBottomOf="parent"
56+
app:layout_constraintEnd_toEndOf="@+id/etPassword"
57+
app:layout_constraintStart_toStartOf="@+id/etPassword"
58+
app:layout_constraintTop_toBottomOf="@+id/etPassword" />
59+
60+
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)