aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Backend/Api/Api/Controllers/UserController.cs6
-rw-r--r--Backend/Api/Api/Interfaces/IUserService.cs2
-rw-r--r--Backend/Api/Api/Services/PostService.cs6
-rw-r--r--Backend/Api/Api/Services/UserService.cs24
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangePassword.kt92
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt10
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt9
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt69
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_password.xml1
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml2
11 files changed, 201 insertions, 24 deletions
diff --git a/Backend/Api/Api/Controllers/UserController.cs b/Backend/Api/Api/Controllers/UserController.cs
index 73d32ea..30beac4 100644
--- a/Backend/Api/Api/Controllers/UserController.cs
+++ b/Backend/Api/Api/Controllers/UserController.cs
@@ -162,6 +162,12 @@ namespace Api.Controllers
return Ok(await _userService.ChangeMyProfileName(newName));
}
+ [HttpPost("changePass")]
+ [Authorize(Roles = "User")]
+ public async Task<ActionResult<int>> ChangePass(string currentPass, string newPass)
+ {
+ return Ok(await _userService.ChangePass(currentPass,newPass));
+ }
}
diff --git a/Backend/Api/Api/Interfaces/IUserService.cs b/Backend/Api/Api/Interfaces/IUserService.cs
index f4954e0..855272f 100644
--- a/Backend/Api/Api/Interfaces/IUserService.cs
+++ b/Backend/Api/Api/Interfaces/IUserService.cs
@@ -40,6 +40,8 @@ namespace Api.Interfaces
Task<int> ChangeMyProfileUsername(String newUsername);
Task<bool> ChangeMyProfileName(String newUsername);
+ Task<int> ChangePass(string currentPass, string newPass);
+
}
}
diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs
index cb59330..0799f10 100644
--- a/Backend/Api/Api/Services/PostService.cs
+++ b/Backend/Api/Api/Services/PostService.cs
@@ -162,7 +162,11 @@ namespace Api.Services
tosend.ratingscount = ps.ratingscount;
if (p.ownerId == userid)
- return null;
+ {
+ tosend.myrating = -1;
+ return tosend;
+ }
+
if(rating.rating == 0)// ako nema rating staviti 0
{
var r = p.ratings.Find(x => x.userId == userid);
diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs
index 98938c0..d8ec4a2 100644
--- a/Backend/Api/Api/Services/UserService.cs
+++ b/Backend/Api/Api/Services/UserService.cs
@@ -741,6 +741,30 @@ namespace Api.Services
return false;
}
+ public async Task<int> ChangePass(string currentPass,string newPass)
+ {
+
+ string myId = null;
+ if (_httpContext.HttpContext.User.FindFirstValue("id") != null)
+ {
+ myId = _httpContext.HttpContext.User.FindFirstValue("id").ToString();
+ }
+
+ User u = await _users.Find(user => user._id == myId).FirstOrDefaultAsync();
+
+ if (u != null)
+ {
+ if (checkPassword(currentPass, u.password))
+ {
+ u.password = hashPassword(newPass);
+ await _users.ReplaceOneAsync(x => x._id == u._id, u);
+ return 1;
+ }
+ return -1;
+ }
+ return -2;
+ }
+
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangePassword.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangePassword.kt
index 08f3e1c..2198153 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangePassword.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangePassword.kt
@@ -1,12 +1,104 @@
package com.example.brzodolokacije.Activities
+import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
+
import com.example.brzodolokacije.R
+import android.widget.Button
+import android.widget.TextView
+import android.widget.Toast
+import androidx.core.view.isVisible
+import com.exam.DBHelper.Companion.activity
+import com.example.brzodolokacije.Models.UserReceive
+import com.example.brzodolokacije.Services.RetrofitHelper
+import com.example.brzodolokacije.Services.SharedPreferencesHelper
+import retrofit2.Call
+import retrofit2.Response
+
class ActivityChangePassword : AppCompatActivity() {
+
+ private lateinit var oldPass:TextView
+ private lateinit var oldPassError:TextView
+ private lateinit var newPass:TextView
+ private lateinit var newPassError:TextView
+ private lateinit var confirmPass:TextView
+ private lateinit var confirmPassError:TextView
+ private lateinit var forgotten:TextView
+ private lateinit var submit:Button
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_change_password)
+
+ oldPass=findViewById(R.id.changeDataOldPassword)
+ oldPassError=findViewById(R.id.ActivityChangePasswordOldError)
+ newPass=findViewById(R.id.tvActivityChangePasswordNewPass)
+ newPassError=findViewById(R.id.btnActivityChangePasswordNewError)
+ confirmPass=findViewById(R.id.ActivityChangePasswordNewPasswordConfirm)
+ confirmPassError=findViewById(R.id.btnActivityChangePasswordConfirmError)
+ forgotten=findViewById(R.id.btnActivityChangePasswordForgottenPass)
+ submit=findViewById(R.id.ActivityChangePasswordChangePassword)
+
+ oldPassError.isVisible=false
+ newPassError.isVisible=false
+ confirmPassError.isVisible=false
+
+ submit.setOnClickListener{
+ oldPassError.isVisible=false
+ newPassError.isVisible=false
+ confirmPassError.isVisible=false
+
+ if(oldPass.text.toString().trim().isNotEmpty()&&newPass.text.toString().trim().isNotEmpty()
+ &&confirmPass.text.toString().trim().isNotEmpty()){
+
+ if(newPass.text.toString().trim() == confirmPass.text.toString().trim()){
+
+ //PROVERI DA LI JE TRENUTA LOZINKA ISTA KAO TRENUTNI UNOS
+
+ val authApi= RetrofitHelper.getInstance()
+ val token= SharedPreferencesHelper.getValue("jwt",this@ActivityChangePassword)
+ val request=authApi.changePass("Bearer "+token)
+
+ request.enqueue(object : retrofit2.Callback<Int> {
+ override fun onResponse(call: Call<Int>, response: Response<Int>) {
+ if(response.isSuccessful()){
+ var done=response.body()!!
+ if(done==1){
+ Toast.makeText(this@ActivityChangePassword, "Lozinka je uspešno promenjena.", Toast.LENGTH_LONG).show();
+ }
+ else if(done==-1){
+ oldPassError.isVisible=true
+ oldPassError.text="Uneta lozinka nije odgovarajuća, pokušajte ponovo."
+ oldPassError.setTextColor(Color.RED)
+
+ }
+ else if(done==-2){
+ Toast.makeText(this@ActivityChangePassword, "Lozinka nije promenjena. Pokušajte ponovo", Toast.LENGTH_LONG).show();
+ }
+ }else{
+ if(response.errorBody()!=null)
+ Toast.makeText(this@ActivityChangePassword, response.errorBody()!!.string(), Toast.LENGTH_LONG).show();
+ }
+ }
+ override fun onFailure(call: Call<Int>, t: Throwable) {
+ Toast.makeText(
+ activity, t.toString(), Toast.LENGTH_LONG
+ ).show();
+ }
+ })
+ }
+ else{
+ confirmPassError.isVisible=true
+ confirmPassError.text="Lozinke se ne podudaraju."
+ confirmPassError.setTextColor(Color.RED)
+ }
+ }
+ }
+
+
+
+
}
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
index 139d569..74b5f4c 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
@@ -184,8 +184,10 @@ class ActivitySinglePost : AppCompatActivity() {
}
fun loadTags(){
- if(post.tags!=null) {
- for (item in post.tags!!) {
+
+
+ if(post.tags!=null)
+ for( item in post.tags!!){
var newbtn = Button(this)
newbtn.text = item
var layoutParams = LinearLayout.LayoutParams(
@@ -193,6 +195,7 @@ class ActivitySinglePost : AppCompatActivity() {
50
)
layoutParams.setMargins(3)
+
newbtn.layoutParams = layoutParams
newbtn.setBackgroundColor(Color.parseColor("#1C789A"))
newbtn.setTextColor(Color.WHITE)
@@ -203,7 +206,8 @@ class ActivitySinglePost : AppCompatActivity() {
}
}
- }
+
+
fun loadFavourite(){
if(post.favourites!=null){
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt
index fdc91f6..0b0ad55 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt
@@ -10,6 +10,7 @@ import android.widget.Button
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import com.exam.DBHelper
+import com.example.brzodolokacije.Activities.ActivityChangePassword
import com.example.brzodolokacije.Activities.ActivityChangeUserData
import com.example.brzodolokacije.Activities.ActivityLoginRegister
import com.example.brzodolokacije.FragmentProfileStatistics
@@ -21,6 +22,7 @@ class FragmentMyProfileInfo : Fragment() {
private lateinit var logout:Button
private lateinit var changeAccount:Button
private lateinit var statistics:Button
+ private lateinit var changePassword:Button
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -32,6 +34,7 @@ class FragmentMyProfileInfo : Fragment() {
logout=view.findViewById<View>(R.id.buttonLogOut) as Button
changeAccount=view.findViewById(R.id.changeAccountData)
statistics=view.findViewById<View>(R.id.getAccoutStatistics) as Button
+ changePassword=view.findViewById(R.id.ChangePassword)
logout.setOnClickListener{
logOut()
@@ -41,6 +44,7 @@ class FragmentMyProfileInfo : Fragment() {
val intent = Intent (getActivity(), ActivityChangeUserData::class.java)
getActivity()?.startActivity(intent)
}
+
statistics.setOnClickListener {
val manager: androidx.fragment.app.FragmentManager? = fragmentManager
@@ -55,6 +59,11 @@ class FragmentMyProfileInfo : Fragment() {
}
+ changePassword.setOnClickListener {
+ val intent = Intent (getActivity(), ActivityChangePassword::class.java)
+ getActivity()?.startActivity(intent)
+ }
+
return view
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt
index 877fbc4..1f17a11 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt
@@ -77,7 +77,7 @@ class FragmentSinglePostDescription : Fragment() {
starNumber=1
rate(starNumber)
}
- star1.setOnClickListener {
+ star2.setOnClickListener {
//Toast.makeText(this,"kliknuta druga zvezdica",Toast.LENGTH_SHORT).show()
star1.setImageResource(fullStar)
star2.setImageResource(fullStar)
@@ -87,7 +87,7 @@ class FragmentSinglePostDescription : Fragment() {
starNumber=2
rate(starNumber)
}
- star1.setOnClickListener {
+ star3.setOnClickListener {
//Toast.makeText(this,"kliknuta treca zvezdica",Toast.LENGTH_SHORT).show()
star1.setImageResource(fullStar)
star2.setImageResource(fullStar)
@@ -97,8 +97,8 @@ class FragmentSinglePostDescription : Fragment() {
starNumber=3
rate(starNumber)
}
- star1.setOnClickListener {
- Toast.makeText(requireActivity(),"kliknuta cetvrta zvezdica",Toast.LENGTH_SHORT).show()
+ star4.setOnClickListener {
+ //Toast.makeText(requireActivity(),"kliknuta cetvrta zvezdica",Toast.LENGTH_SHORT).show()
star1.setImageResource(fullStar)
star2.setImageResource(fullStar)
star3.setImageResource(fullStar)
@@ -107,7 +107,7 @@ class FragmentSinglePostDescription : Fragment() {
starNumber=4
rate(starNumber)
}
- star1.setOnClickListener {
+ star5.setOnClickListener {
//Toast.makeText(this,"kliknuta peta zvezdica",Toast.LENGTH_SHORT).show()
star1.setImageResource(fullStar)
star2.setImageResource(fullStar)
@@ -140,19 +140,52 @@ class FragmentSinglePostDescription : Fragment() {
"--------------",
data.ratings.toString() + " " + data.ratingscount.toString()
)
- when (data.myrating) {
- 1 -> star1.performClick()
- 2 -> star1.performClick()
- 3 -> star3.performClick()
- 4 -> star4.performClick()
- 5 -> star5.performClick()
- else -> {
- val emptyStar = R.drawable.empty_star
- star1.setImageResource(emptyStar)
- star2.setImageResource(emptyStar)
- star3.setImageResource(emptyStar)
- star4.setImageResource(emptyStar)
- star5.setImageResource(emptyStar)
+ if(rating.rating==0) {
+ val emptyStar = R.drawable.empty_star
+ val fullStar = R.drawable.ic_baseline_star_rate_24
+ when (data.myrating) {
+ 1 -> {
+ star1.setImageResource(fullStar)
+ star2.setImageResource(emptyStar)
+ star3.setImageResource(emptyStar)
+ star4.setImageResource(emptyStar)
+ star5.setImageResource(emptyStar)
+ }
+ 2 -> {
+ star1.setImageResource(fullStar)
+ star2.setImageResource(fullStar)
+ star3.setImageResource(emptyStar)
+ star4.setImageResource(emptyStar)
+ star5.setImageResource(emptyStar)
+ }
+ 3 -> {
+ star1.setImageResource(fullStar)
+ star2.setImageResource(fullStar)
+ star3.setImageResource(fullStar)
+ star4.setImageResource(emptyStar)
+ star5.setImageResource(emptyStar)
+ }
+ 4 -> {
+ star1.setImageResource(fullStar)
+ star2.setImageResource(fullStar)
+ star3.setImageResource(fullStar)
+ star4.setImageResource(fullStar)
+ star5.setImageResource(emptyStar)
+ }
+ 5 -> {
+ star1.setImageResource(fullStar)
+ star2.setImageResource(fullStar)
+ star3.setImageResource(fullStar)
+ star4.setImageResource(fullStar)
+ star5.setImageResource(fullStar)
+ }
+ else -> {
+ star1.setImageResource(emptyStar)
+ star2.setImageResource(emptyStar)
+ star3.setImageResource(emptyStar)
+ star4.setImageResource(emptyStar)
+ star5.setImageResource(emptyStar)
+ }
}
}
/*Toast.makeText(
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
index 19b1bb5..960c56d 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
@@ -121,4 +121,8 @@ interface IBackendApi {
@GET("/api/user/{newName}/changeMyName")
fun changeMyName(@Header("Authorization") authHeader:String,@Path("newName") newName:String):Call<Boolean>
+
+ @POST("/api/user/changePass")
+ fun changePass(@Header("Authorization") authHeader:String):Call<Int>
+
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_password.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_password.xml
index a7a1d5f..dc8243e 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_password.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_password.xml
@@ -154,7 +154,6 @@
android:hint="Unesi novu lozinku"
android:inputType="textPassword"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/changeDataNewPasswordConfirmInputt" />
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml
index 2d9dfd5..d5d72d1 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml
@@ -86,6 +86,6 @@
android:layout_height="match_parent" />
</LinearLayout>
-
+
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file