This commit is contained in:
Le Deng
2017-03-07 14:36:01 -05:00
parent 85e057f1ef
commit edd576cd08
10 changed files with 180 additions and 19 deletions

View File

@@ -16,11 +16,21 @@
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="UserResource.java" pinned="false" current-in-tab="true">
<file leaf-file-name="UserResource.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/bookstore/resource/UserResource.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="697">
<caret line="172" column="45" lean-forward="false" selection-start-line="172" selection-start-column="45" selection-end-line="172" selection-end-column="45" />
<state relative-caret-position="293">
<caret line="182" column="0" lean-forward="false" selection-start-line="182" selection-start-column="0" selection-end-line="182" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ShoppingCart.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/com/bookstore/domain/ShoppingCart.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="28" column="15" lean-forward="false" selection-start-line="28" selection-start-column="15" selection-end-line="28" selection-end-column="15" />
<folding />
</state>
</provider>
@@ -98,7 +108,6 @@
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/domain/Order.java" />
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/domain/Payment.java" />
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/domain/ShippingAddress.java" />
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/domain/ShoppingCart.java" />
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/domain/User.java" />
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/domain/UserBilling.java" />
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/domain/UserPayment.java" />
@@ -124,6 +133,7 @@
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/service/BookService.java" />
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/resource/BookResource.java" />
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/resource/UserResource.java" />
<option value="$PROJECT_DIR$/src/main/java/com/bookstore/domain/ShoppingCart.java" />
</list>
</option>
</component>
@@ -415,6 +425,36 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="bookstore-api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="bookstore-api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="bookstore" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="domain" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="bookstore-api" />
@@ -890,12 +930,12 @@
<workItem from="1486538831944" duration="450000" />
<workItem from="1488378219247" duration="650000" />
<workItem from="1488461561430" duration="18419000" />
<workItem from="1488731165185" duration="11348000" />
<workItem from="1488731165185" duration="12477000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="73360000" />
<option name="totallyTimeSpent" value="74489000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1280" height="797" extended-state="0" />
@@ -918,7 +958,7 @@
<window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32796317" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32765958" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Spring" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32907802" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
@@ -1110,13 +1150,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/bookstore/domain/ShoppingCart.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="16" column="0" lean-forward="true" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/bookstore/domain/User.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
@@ -1198,6 +1231,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="248">
<caret line="34" column="41" lean-forward="true" selection-start-line="34" selection-start-column="41" selection-end-line="34" selection-end-column="41" />
<folding />
</state>
</provider>
</entry>
@@ -1304,8 +1338,16 @@
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/bookstore/resource/UserResource.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="697">
<caret line="172" column="45" lean-forward="false" selection-start-line="172" selection-start-column="45" selection-end-line="172" selection-end-column="45" />
<state relative-caret-position="293">
<caret line="182" column="0" lean-forward="false" selection-start-line="182" selection-start-column="0" selection-end-line="182" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/bookstore/domain/ShoppingCart.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="28" column="15" lean-forward="false" selection-start-line="28" selection-start-column="15" selection-end-line="28" selection-end-column="15" />
<folding />
</state>
</provider>

View File

@@ -26,6 +26,7 @@ public class ShoppingCart implements Serializable {
private List<CartItem> cartItemList;
@OneToOne(cascade = CascadeType.ALL)
@JsonIgnore
private User user;
public Long getId() {

View File

@@ -21,6 +21,7 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.security.Principal;
import java.util.*;
/**
@@ -173,4 +174,12 @@ public class UserResource {
return new ResponseEntity("Email sent!", HttpStatus.OK);
}
@RequestMapping("/getCurrentUser")
public User getCurrentUser(Principal principal){
User user = userService.findByUsername(principal.getName());
return user;
}
}

View File

@@ -6,6 +6,7 @@ import {Routes, RouterModule} from '@angular/router';
import {HomeComponent} from './components/home/home.component';
import {MyAccountComponent} from './components/my-account/my-account.component';
import {MyProfileComponent} from './components/my-profile/my-profile.component';
const appRoutes: Routes = [
@@ -21,6 +22,10 @@ const appRoutes: Routes = [
{
path: 'myAccount',
component: MyAccountComponent
},
{
path: 'myProfile',
component: MyProfileComponent
}
];

View File

@@ -1,3 +1,82 @@
<p>
my-profile works!
</p>
<div class="container">
<div class="row">
<div class="col-xs-8">
<h2 class="section-headline"><span>My Account</span></h2>
</div>
<div class="col-xs-4">
<img src="../../../assets/image/logo.png" class="img-responsive right" style="width:400px; z-index: 1;" />
</div>
<img class="img-responsive" src="../../../assets/image/wood.png" style="position: absolute;margin-top: 90px;z-index: -2;" />
</div>
<hr style="position: absolute; width:85%; height:6px; background-color: #333; z-index: -1; margin-top: -170px " />
<div class="row" style="margin-top: 30px;">
<div class="col-xs-3"></div>
<div class="col-xs-9">
<div class="panel-group">
<div class="panel panel-default panel-faq" style="border: none;">
<div class="panel-body" style="background-color: #ededed; margin-top: 20px;">
<md-tab-group>
<md-tab label="Edit">
<div style="margin-top:20px;">
<div class="alert alert-danger" *ngIf="incorrectPassword">
<strong>Incorrect Password!</strong> Please enter the correct password for the current user.
</div>
<div class="alert alert-success" *ngIf="updateSuccess">
<strong>Update Success!</strong>
</div>
<form (ngSubmit)="updateUserInfo" method="post">
<input type="hidden" name="id" [(ngModel)]="user.id" />
<div class="bg-info" *ngIf="updateUserInfo">User info updated.</div>
<div class="form-group">
<div class="row">
<div class="col-xs-6">
<label for="firstName">First Name</label>
<input type="text" class="form-control" id="firstName" name="firstName" [(ngModel)]="user.firstName" />
</div>
<div class="col-xs-6">
<label for="lastName">Last Name</label>
<input type="text" class="form-control" id="lastName" name="lastName" [(ngModel)]="user.lastName" />
</div>
</div>
</div>
<div class="form-group">
<label for="username">Username *</label>&nbsp;<span *ngIf="usernameExists" style="color:red;">Username already exists. Choose a different one.</span>
<input required="required" type="text" class="form-control" id="username" name="username" [(ngModel)]="user.username" />
</div>
<div class="form-group">
<label for="currentPassword">Current password</label>
<input type="password" class="form-control" id="currentPassword" name="password" [(ngModel)]="currentPassword" />
<p style="color: #828282;"> Enter your current password to change the E-mail address or Password.</p>
</div>
<div class="form-group">
<label for="email">E-mail Address *</label>&nbsp;<span *ngIf="emailExists" style="color:red;">Email already exists. Choose a different one.</span>
<input required="required" type="text" class="form-control" id="email" name="email" [(ngModel)]="user.email" />
<p style="color: #828282;"> A valid e-mail address. All e-mails from the system will be sent to this address. The e-mail address is not made public and will only be used if you wish to receive a new password or wish to receive certain news or notifications by e-mail.</p>
</div>
<div class="form-group">
<label for="txtNewPassword">Password</label>&nbsp;<span id="checkPasswordMatch" style="color:red;"></span>
<input type="password" class="form-control" id="txtNewPassword" name="newPassword" />
</div>
<div class="form-group">
<label for="txtConfirmPassword">Confirm Password</label>
<input type="password" class="form-control" id="txtConfirmPassword" />
<p style="color: #828282;"> To change the current user password, enter the new password in both fields.</p>
</div>
<button type="submit" class="btn btn-primary" id="updateUserInfoButton">Save
</button>
</form>
</div>
</md-tab>
<md-tab label="Orders">
</md-tab>
<md-tab label="Billing">
</md-tab>
<md-tab label="Shipping">
</md-tab>
</md-tab-group>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -3,6 +3,7 @@ import {AppConst} from '../../constants/app-const';
import {Router} from "@angular/router";
import {LoginService} from "../../services/login.service";
import {UserService} from "../../services/user.service";
import {User} from '../../models/user';
@Component({
selector: 'app-my-profile',
@@ -26,6 +27,8 @@ export class MyProfileComponent implements OnInit {
private forgetPasswordEmailSent: boolean = false;
private recoverEmail:string;
private user: User = new User();
constructor (private loginService: LoginService, private userService: UserService, private router: Router){
}
@@ -91,4 +94,15 @@ export class MyProfileComponent implements OnInit {
}
);
this.userService.getCurrentUser().subscribe(
res => {
console.log(res.json());
this.user=res.json();
},
error => {
console.log(error);
}
);
}
}

View File

@@ -21,6 +21,7 @@
</li>
<li *ngIf="!loggedIn" ><a md-button routerLink="/myAccount" routerLinkActive="active">MY ACCOUNT</a></li>
<li *ngIf="loggedIn"><a md-button routerLink="/myProfile" routerLinkActive="active">MY PROFILE</a></li>
<li *ngIf="loggedIn"><a md-button (click)="logout()">LOGOUT</a></li>
</ul>
</div>

View File

@@ -32,4 +32,14 @@ export class UserService {
});
return this.http.post(url, JSON.stringify(userInfo), {headers : tokenHeader});
}
getCurrentUser(){
let url = this.serverPath+"/user/getCurrentUser";
let tokenHeader = new Headers ({
'Content-Type': 'application/json',
'x-auth-token' : localStorage.getItem("xAuthToken")
});
return this.http.get(url, {headers : tokenHeader});
}
}