diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8f178bf..9e7d774 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,8 +2,6 @@
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myapplication/LockerFragment.kt b/app/src/main/java/com/example/myapplication/LockerFragment.kt
index 859e7c3..51cb04e 100644
--- a/app/src/main/java/com/example/myapplication/LockerFragment.kt
+++ b/app/src/main/java/com/example/myapplication/LockerFragment.kt
@@ -1,9 +1,11 @@
package com.example.myapplication
+import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import com.example.myapplication.databinding.FragmentLockerBinding
import com.google.android.material.tabs.TabLayoutMediator
@@ -27,8 +29,48 @@ class LockerFragment : Fragment() {
tab.text = information[position]
}.attach()
+ binding.lockerLoginTv.setOnClickListener {
+ startActivity(Intent(activity, LoginActivity::class.java))
+ }
+
return binding.root
}
+
+ override fun onStart() {
+ super.onStart()
+ initViews()
+ }
+
+ private fun getJwt():Int{
+ val spf = activity?.getSharedPreferences("auth", AppCompatActivity.MODE_PRIVATE)
+ return spf!!.getInt("jwt", 0)
+ }
+
+ private fun initViews() {
+ val jwt: Int = getJwt()
+ if (jwt == 0) {
+ binding.lockerLoginTv.text = "로그인"
+ binding.lockerLoginTv.setOnClickListener {
+ startActivity(Intent(activity, LoginActivity::class.java))
+ }
+ }
+ else {
+ binding.lockerLoginTv.text = "로그아웃"
+ binding.lockerLoginTv.setOnClickListener {
+ logout()
+ startActivity(Intent(activity, MainActivity::class.java))
+ }
+ }
+ }
+
+ private fun logout() {
+ val spf = activity?.getSharedPreferences("auth",AppCompatActivity.MODE_PRIVATE)
+ val editor = spf!!.edit()
+ editor.remove("jwt")
+ editor.apply()
+ }
+
+
}
diff --git a/app/src/main/java/com/example/myapplication/LoginActivity.kt b/app/src/main/java/com/example/myapplication/LoginActivity.kt
new file mode 100644
index 0000000..41f5ed0
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/LoginActivity.kt
@@ -0,0 +1,67 @@
+package com.example.myapplication
+
+import android.content.Intent
+import android.os.Bundle
+import android.util.Log
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import com.example.flo.SongDatabase
+import com.example.myapplication.databinding.ActivityLoginBinding
+
+class LoginActivity : AppCompatActivity() {
+
+ lateinit var binding : ActivityLoginBinding
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityLoginBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ binding.loginSignUpTv.setOnClickListener {
+ startActivity(Intent(this, SignUpActivity::class.java))
+ }
+
+ binding.loginSignInBtn.setOnClickListener{
+ login()
+ }
+ }
+
+ private fun login() {
+ if (binding.loginIdEt.text.toString().isEmpty() || binding.loginDirectInputEt.text.toString().isEmpty()) {
+ Toast.makeText(this, "이메일을 입력해주세요", Toast.LENGTH_SHORT).show()
+ return
+ }
+
+ if (binding.loginPasswordEt.text.toString().isEmpty()) {
+ Toast.makeText(this, "비밀번호를 입력해주세요", Toast.LENGTH_SHORT).show()
+ return
+ }
+
+ val email : String = binding.loginIdEt.text.toString() + "@" + binding.loginDirectInputEt.text.toString()
+ val pwd : String = binding.loginPasswordEt.text.toString()
+
+ val songDB = SongDatabase.getInstance(this)!!
+ val user = songDB.UserDao().getUser(email, pwd)
+
+ user.let {
+ Log.d("LOGIN_ACT/GET_USER", "userId: ${user!!.id}, $user")
+ saveJwt(user!!.id)
+ startMainActivity()
+ }
+ Toast.makeText(this, "회원 정보가 존재하지 않습니다", Toast.LENGTH_SHORT).show()
+ }
+
+ private fun startMainActivity() {
+ val intent = Intent(this, MainActivity::class.java)
+ startActivity(intent)
+ }
+
+ private fun saveJwt(jwt : Int) {
+ val spf = getSharedPreferences("auth", MODE_PRIVATE)
+ val editor = spf.edit()
+
+ editor.putInt("jwt", jwt)
+ editor.apply()
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myapplication/SignUpActivity.kt b/app/src/main/java/com/example/myapplication/SignUpActivity.kt
new file mode 100644
index 0000000..035822e
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/SignUpActivity.kt
@@ -0,0 +1,54 @@
+package com.example.myapplication
+
+import android.os.Bundle
+import android.util.Log
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import com.example.flo.SongDatabase
+import com.example.myapplication.databinding.ActivitySignUpBinding
+
+class SignUpActivity : AppCompatActivity() {
+
+ lateinit var binding: ActivitySignUpBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivitySignUpBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ binding.signUpSignUpBtn.setOnClickListener {
+ val signUpCompletion = signUp()
+ if(signUpCompletion) {
+ finish()
+ }
+ }
+
+ }
+
+ private fun getUser() : User {
+ val email : String = binding.signUpIdEt.text.toString() + "@" + binding.signUpDirectInputEt.text.toString()
+ val pwd : String = binding.signUpPasswordEt.text.toString()
+ return User(email, pwd)
+ }
+
+ private fun signUp() : Boolean {
+ if(binding.signUpIdEt.text.toString().isEmpty() || binding.signUpDirectInputEt.text.toString().isEmpty()) {
+ Toast.makeText(this, "이메일 형식이 잘못되었습니다.", Toast.LENGTH_SHORT).show()
+ return false
+ }
+
+ if(binding.signUpPasswordEt.text.toString() != binding.signUpPasswordCheckEt.text.toString()) {
+ Toast.makeText(this, "비밀번호가 일치하지 않습니다.", Toast.LENGTH_SHORT).show()
+ return false
+ }
+
+ val userDB = SongDatabase.getInstance(this)!!
+ userDB.UserDao().insert(getUser())
+
+ val user = userDB.UserDao().getUsers()
+ Log.d("sign up", user.toString())
+
+ Toast.makeText(this, "회원가입이 완료되었습니다.", Toast.LENGTH_SHORT).show()
+ return true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myapplication/SongDatabase.kt b/app/src/main/java/com/example/myapplication/SongDatabase.kt
index 29d0f14..099b62f 100644
--- a/app/src/main/java/com/example/myapplication/SongDatabase.kt
+++ b/app/src/main/java/com/example/myapplication/SongDatabase.kt
@@ -7,6 +7,8 @@ import androidx.room.RoomDatabase
import com.example.myapplication.Album
//import com.example.myapplication.AlbumDao
import com.example.myapplication.Song
+import com.example.myapplication.User
+import com.example.myapplication.UserDao
/*
@@ -36,10 +38,11 @@ abstract class SongDatabase: RoomDatabase() {
*/
//@Database(entities = [Song::class, Album::class], version = 1)
-@Database(entities = [Song::class], version = 1)
+@Database(entities = [Song::class, User::class], version = 1)
abstract class SongDatabase: RoomDatabase() {
abstract fun songDao(): SongDao
//abstract fun albumDao(): AlbumDao
+ abstract fun UserDao(): UserDao
companion object {
private var instance: SongDatabase? = null
diff --git a/app/src/main/java/com/example/myapplication/User.kt b/app/src/main/java/com/example/myapplication/User.kt
new file mode 100644
index 0000000..4010bee
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/User.kt
@@ -0,0 +1,12 @@
+package com.example.myapplication
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "UserTable")
+data class User(
+ var email : String,
+ var password : String
+) {
+ @PrimaryKey(autoGenerate = true) var id : Int = 0
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myapplication/UserDao.kt b/app/src/main/java/com/example/myapplication/UserDao.kt
new file mode 100644
index 0000000..7c57352
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/UserDao.kt
@@ -0,0 +1,15 @@
+package com.example.myapplication
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.Query
+
+@Dao
+interface UserDao {
+ @Insert
+ fun insert(user : User)
+ @Query("select * from UserTable")
+ fun getUsers() : List
+ @Query("select * from UserTable where email =:email and password = :password")
+ fun getUser(email : String, password : String) : User?
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000..ab4419f
--- /dev/null
+++ b/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,284 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sign_up.xml b/app/src/main/res/layout/activity_sign_up.xml
new file mode 100644
index 0000000..9346cfe
--- /dev/null
+++ b/app/src/main/res/layout/activity_sign_up.xml
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sign_up/xml.kt b/app/src/main/res/layout/activity_sign_up/xml.kt
new file mode 100644
index 0000000..80d3742
--- /dev/null
+++ b/app/src/main/res/layout/activity_sign_up/xml.kt
@@ -0,0 +1,4 @@
+package layout.activity_sign_up
+
+class xml {
+}
\ No newline at end of file