Skip to content
Snippets Groups Projects
Commit 948de0b7 authored by Bart Chou's avatar Bart Chou
Browse files

finish profile

parent 0cdef91e
No related branches found
No related tags found
2 merge requests!34Sprint 2 done,!311. add vuex
......@@ -134,4 +134,20 @@ public class UserController {
return response;
}
@GetMapping("/profile")
public ResponseModel getProfile(
@CookieValue(value = "userId", required = false) String userId,
@CookieValue(value = "token", required = false) String token) {
ResponseModel response = new ResponseModel();
if (userId == null || token == null || !userService.checkLoginSession(userId, token)) {
response.setMessage("Login session expired or invalid");
response.setStatus(HttpStatus.FORBIDDEN);
return response;
}
response = userService.getProfile(userId);
return response;
}
}
......@@ -2,6 +2,7 @@ package vt.CS5934.SwitchRoom.services;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import net.bytebuddy.implementation.bytecode.Throw;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -15,7 +16,9 @@ import vt.CS5934.SwitchRoom.repositories.UserRepository;
import javax.transaction.Transactional;
import java.security.NoSuchAlgorithmException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@Service
public class UserService {
......@@ -90,7 +93,7 @@ public class UserService {
UserModel existUser = userRepository.findByUserId(Integer.parseInt(userId));
if (existUser == null) {
logger.error("checkLoginSession: FORBIDDEN (user not found)");
logger.warn("checkLoginSession: FORBIDDEN (user not found)");
return false;
}
ObjectMapper mapper = new ObjectMapper();
......@@ -113,4 +116,26 @@ public class UserService {
}
}
public ResponseModel getProfile(String userId) {
ResponseModel response = new ResponseModel();
UserModel existUser = userRepository.findByUserId(Integer.parseInt(userId));
if (existUser == null) {
logger.warn("getProfile: FORBIDDEN (user not found)");
response.setMessage("user not found");
response.setStatus(HttpStatus.FORBIDDEN);
return response;
}
Map<String, String> profile = new LinkedHashMap<>();
profile.put("username", existUser.getUsername());
profile.put("email", existUser.getEmail());
profile.put("firstName", existUser.getFirstname());
profile.put("lastName", existUser.getLastname());
response.setData(profile);
response.setStatus(HttpStatus.OK);
return response;
}
}
......@@ -8,21 +8,25 @@
<div class="row clearfix">
<div class="">
<div class="form">
<label for="user-oldPassword" style="padding-top: 13px">
&nbsp;Username
</label>
<div class="profile-label">
<div>&nbsp;Username</div>
<div>{{profile.username}}&nbsp;</div>
</div>
<div class="form-border"></div>
<label for="user-newPassword" style="padding-top: 13px">
&nbsp;Email
</label>
<div class="profile-label">
<div>&nbsp;Email</div>
<div>{{profile.email}}&nbsp;</div>
</div>
<div class="form-border"></div>
<label for="user-newPassword" style="padding-top: 13px">
&nbsp;First Name
</label>
<div class="profile-label">
<div>&nbsp;First Name</div>
<div>{{profile.firstName}}&nbsp;</div>
</div>
<div class="form-border"></div>
<label for="user-newPassword" style="padding-top: 13px">
&nbsp;Last Name
</label>
<div class="profile-label">
<div>&nbsp;Last Name</div>
<div>{{profile.lastName}}&nbsp;</div>
</div>
<div class="form-border"></div>
<button id="submit-btn" @click.prevent="onClickResetPassword" type="submit" value="Submit">
Reset Password
......@@ -35,16 +39,30 @@
</template>
<script setup lang="ts">
import { ref, reactive } from "vue";
import * as UserService from "../services/UserService";
import { ref, reactive, onMounted } from "vue";
import { useRouter } from "vue-router";
import { User } from "@/type/types";
import {getProfile} from "../services/UserService";
const router = useRouter();
const userInformation = reactive({
oldPassword: "",
newPassword: ""
const profile = reactive({
username: "",
email: "",
firstName: "",
lastName: "",
});
onMounted(async () => {
await getProfile()
.then((response) => {
if (response.status == "OK") {
const data = response.data
profile.username = data["username"]
profile.email = data["email"]
profile.firstName = data["firstName"]
profile.lastName = data["lastName"]
} else {
alert(response.message)
}
})
})
const onClickResetPassword = () => {
router.push("/resetpassword");
};
......@@ -100,6 +118,13 @@ body {
width: 100%;
}
.profile-label {
padding-top: 13px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
#submit-btn {
background: #2ec06f;
border: none;
......
......@@ -19,5 +19,15 @@ function resetPassword(userData: any) {
const urlPath = "/resetPassword";
return serverHttpService.Post(baseUrl + urlPath, JSON.parse(userData));
}
function getProfile() {
const urlPath = "/profile";
return serverHttpService.Get(baseUrl + urlPath);
}
export { postUserDataToServer, loginUser, checkLoginSession, resetPassword };
export {
postUserDataToServer,
loginUser,
checkLoginSession,
resetPassword,
getProfile
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment