Merge pull request #11 from Pear-Trading/TBSliver/Login-Fix

Fix errors found on logout then login again
This commit is contained in:
Tom Bloor 2017-09-08 15:22:57 +01:00 committed by GitHub
commit d3eee9901c
8 changed files with 90 additions and 185 deletions

View file

@ -7,7 +7,6 @@ import 'rxjs/add/operator/map';
@Component({
templateUrl: 'login.component.html',
providers: [ApiService]
})
export class LoginComponent implements OnInit {
signin: FormGroup;
@ -38,10 +37,6 @@ export class LoginComponent implements OnInit {
}
);
this.api.graph_data(undefined).subscribe(
result => { console.log(result) }
)
// get return url from route parameters or default to '/'
this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';
}
@ -54,17 +49,15 @@ export class LoginComponent implements OnInit {
.subscribe(
result => {
console.log('logged in!');
this.loginStatus = "success";
this.loginStatus = 'success';
console.log(this.loginStatus);
this.router.navigate([this.returnUrl]);
},
error => {
console.log( error._body );
this.loginStatus = "send_failed";
this.loginStatus = 'send_failed';
console.log(this.loginStatus);
}
);
}
}

View file

@ -8,7 +8,6 @@ import 'rxjs/add/operator/map';
@Component({
templateUrl: 'register.component.html',
providers: [ApiService]
})
export class RegisterComponent {
@ -134,4 +133,4 @@ export class RegisterComponent {
}
}
}

View file

@ -6,7 +6,6 @@ import 'rxjs/add/operator/map';
@Component({
templateUrl: 'account-edit.component.html',
providers: [ApiService]
})
export class AccountEditComponent implements OnInit {
settingForm: FormGroup;

View file

@ -8,7 +8,6 @@ import 'rxjs/add/operator/map';
@Component({
templateUrl: 'add-data.component.html',
providers: [ApiService]
})
export class AddDataComponent {
payrollForm: FormGroup;

View file

@ -6,7 +6,6 @@ import 'rxjs/add/operator/map';
@Component({
templateUrl: 'feedback.component.html',
providers: [ApiService]
})
export class FeedbackComponent {
feedbackForm: FormGroup;

View file

@ -11,7 +11,6 @@ import 'rxjs/add/operator/map';
@Component({
templateUrl: 'transaction-log.component.html',
providers: [ApiService]
})
export class TransactionLogComponent {

View file

@ -5,7 +5,6 @@ import { Router } from '@angular/router';
@Component({
selector: 'app-dashboard',
templateUrl: './full-layout.component.html',
providers: [ApiService]
})
export class FullLayoutComponent implements OnInit {
displayName: any;

View file

@ -13,15 +13,13 @@ export class ApiService {
constructor(
private http: Http,
) {
if (localStorage.getItem('sessionKey') ) {
this.sessionKey = localStorage.getItem('sessionKey');
}
if (localStorage.getItem('sessionKey') ) {
this.sessionKey = localStorage.getItem('sessionKey');
}
}
public post(url: string, data: any = {}) {
if ( this.sessionKey != null ) {
data.session_key = this.sessionKey;
}
data.session_key = this.sessionKey;
return this.http.post(
this.apiUrl + url,
data
@ -31,20 +29,20 @@ export class ApiService {
// Login API
public getSessionKey() {
console.log('get key');
return this.sessionKey;
console.log('get key');
return this.sessionKey;
}
public setSessionKey(key) {
console.log('set key');
this.sessionKey = key;
localStorage.setItem('sessionKey', this.sessionKey);
console.log('set key');
this.sessionKey = key;
localStorage.setItem('sessionKey', this.sessionKey);
}
public removeSessionKey() {
console.log('remove key');
this.sessionKey = null;
localStorage.removeItem('sessionKey');
console.log('remove key');
this.sessionKey = null;
localStorage.removeItem('sessionKey');
}
public register(data) {
@ -55,33 +53,41 @@ export class ApiService {
}
public login(data) {
let login_event = this.http.post(
this.apiUrl + '/login',
data
).map( response => response.json() );
login_event.subscribe(
result => {
this.setSessionKey(result.session_key);
this.setUserInfo(
result.email,
result.display_name || result.name
return this.http
.post(
this.apiUrl + '/login',
data
)
.map(
result => {
const json = result.json();
this.setSessionKey(json.session_key);
this.setUserInfo(
json.email,
json.display_name || json.name
);
this.setUserType(result.user_type)
}
);
return login_event;
this.setUserType(json.user_type);
return json;
}
);
}
public logout() {
console.log(this.sessionKey);
let key = this.sessionKey;
return this.http.post(
this.apiUrl + '/logout',
{
session_key : key,
}
).map( response => { this.removeSessionKey(); return response.json() } );
}
public logout() {
console.log(this.sessionKey);
const key = this.sessionKey;
return this.http
.post(
this.apiUrl + '/logout',
{ session_key : key },
)
.map(
response => {
localStorage.clear();
this.sessionKey = null;
return response.json();
}
);
}
// Submits feedback
@ -100,24 +106,24 @@ export class ApiService {
// gets transaction list for log
public transList(data) {
let key = this.sessionKey;
return this.http.post(
this.apiUrl + '/outgoing-transactions',
{
const key = this.sessionKey;
return this.http.post(
this.apiUrl + '/outgoing-transactions',
{
session_key : key,
page : data
}
).map( response => response.json() );
).map( response => response.json() );
}
// Searches organisations used for transaction submission
public search(data) {
data.session_key = this.sessionKey;
return this.http.post(
this.apiUrl + '/search',
data
).map( response => response.json() );
data.session_key = this.sessionKey;
return this.http.post(
this.apiUrl + '/search',
data
).map( response => response.json() );
}
// Uploads a transaction
@ -127,7 +133,7 @@ export class ApiService {
return this.http.post(
this.apiUrl + '/upload',
data
).map( response => response.json() )
).map( response => response.json() );
}
// handles Org data added
@ -137,7 +143,7 @@ export class ApiService {
return this.http.post(
this.apiUrl + '/org/payroll',
data
).map( response => response.json() )
).map( response => response.json() );
}
public orgSupplier(data) {
@ -145,7 +151,7 @@ export class ApiService {
return this.http.post(
this.apiUrl + '/org/supplier',
data
).map( response => response.json() )
).map( response => response.json() );
}
public orgEmployee(data) {
@ -153,7 +159,7 @@ export class ApiService {
return this.http.post(
this.apiUrl + '/org/employee',
data
).map( response => response.json() )
).map( response => response.json() );
}
// Handles user data interaction
@ -169,178 +175,90 @@ export class ApiService {
public setUserInfo(
email: string,
display_name: string) {
console.log("set UserInfo");
localStorage.setItem('email',email);
localStorage.setItem('displayname',display_name);
console.log('set UserInfo');
localStorage.setItem('email', email);
localStorage.setItem('displayname', display_name);
}
// Sets usertype
public setUserType(user_type: string) {
console.log("set UserType");
localStorage.setItem('usertype',user_type);
console.log('set UserType');
localStorage.setItem('usertype', user_type);
}
// Used for getting account details and updating
public accountFullLoad() {
let key = this.sessionKey;
return this.http.post(
const key = this.sessionKey;
return this.http.post(
this.apiUrl + '/user',
{ session_key : key },
).map( response => response.json() );
).map( response => response.json() );
}
public accountEditUpdate(data) {
data.session_key = this.sessionKey;
return this.http.post(
data.session_key = this.sessionKey;
return this.http.post(
this.apiUrl + '/user/account',
data
).map( response => response.json() );
).map( response => response.json() );
}
// Deletes account details on logout
public removeUserInfo() {
console.log("remove UserInfo");
console.log('remove UserInfo');
localStorage.removeItem('email');
localStorage.removeItem('displayname');
}
public getFullName() {
console.log("get Full Name");
console.log('get Full Name');
localStorage.getItem('fullname');
}
public getDisplayName() {
console.log("get Display Name");
console.log('get Display Name');
localStorage.getItem('displayname');
}
public getPostcode() {
console.log("get Postcode");
console.log('get Postcode');
localStorage.getItem('postcode');
}
public getYearOfBirth() {
console.log("get Year of Birth");
console.log('get Year of Birth');
localStorage.getItem('yearofbirth');
}
public getEmail() {
console.log("get email");
console.log('get email');
localStorage.getItem('email');
}
// Leaderboard Api
public leaderboard_fetch(data) {
let key = this.sessionKey;
const key = this.sessionKey;
return this.http.post(
this.apiUrl + '/stats/leaderboard',
{
session_key : key,
this.apiUrl + '/stats/leaderboard',
{
session_key : key,
type : data
}
).map( response => response.json() );
}
}
).map( response => response.json() );
}
// Basic Customer User stats API
public basicStats() {
let key = this.sessionKey;
const key = this.sessionKey;
return this.http.post(
this.apiUrl + '/stats',
{
this.apiUrl + '/stats',
{
session_key : key,
}
).map( response => response.json() );
}
// Fake chart data to mimic
public graph_data(data) {
return Observable.of(
{
// graphstoshow is on server and changes every hour, listing what snippets & graphs to display
"elementstoshow" :
{
"graphs" :
{
customersthisweek : true,
customerslastweek : true,
customerslastmonth : true,
customerslastyear : true,
returningcustomerslastweek : true,
returningcustomerslastmonth : true,
returningcustomerslastyear : true,
noofcustomerssector : true,
percentofcustomerssector : true,
pointsthisweek : true,
percentlocalsuppliersvscompetitor : true,
},
"snippets" :
{
customersthismonth: true,
moneyspentthismonth: true,
pointstotal: true,
averagetransactiontoday: true,
percentownlocalsupplier : false,
percentsinglecompetitorlocalsupplier : false,
},
},
"data" :
{
"customersthisweek" :
{
day : ['Monday', 'tuesday','wednesday','thursday','friday','saturday','sunday'],
customerno : [1,2,3,4,5,6,7],
returningcustomerno : [1,1,2,3,4,5,4],
},
"customerslastweek" :
{
day : ['Monday', 'tuesday','wednesday','thursday','friday','saturday','sunday'],
customerno : [7,6,5,4,3,2,1],
returningcustomerno : [3,4,5,4,3,2,1],
},
// can take differing size arrays, so any month works. Example here is for April
"customerslastmonth" :
{
day : ['April 1','April 2','April 3','April 4','April 5','April 6','April 7','April 8',
'April 9','April 10','April 11','April 12','April 13','April 14','April 15','April 16',
'April 17','April 18','April 19','April 20','April 21','April 22','April 23','April 24',
'April 25','April 26','April 27','April 28','April 29','April 30'],
customerno : [7,6,5,4,3,2,1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],
returningcustomerno : [4,5,4,3,2,1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],
},
"customerslastyear" :
{
month : ['January','February','March','April','May','June','July','August','September','October','November','December'],
customerno : [7,6,5,4,3,2,1,8,9,10,11,12],
returningcustomerno : [3,2,4,2,1,1,1,6,4,8,5,12],
},
// If the number is potential or actual customers in their sector has yet to be determined
"customersinsector" :
{
percent : 76,
customerno : 34000,
},
"pointsthisweek" :
{
day : ['Monday', 'tuesday','wednesday','thursday','friday','saturday','sunday'],
points : [1,2,3,4,5,6,7],
},
"pointslastweek" :
{
day : ['Monday', 'tuesday','wednesday','thursday','friday','saturday','sunday'],
points : [1,2,3,4,5,6,7],
},
"localsuppliers" :
{
percentownlocal : 50,
percentsinglecompetitorlocal : 65,
},
},
}
)
}
).map( response => response.json() );
}
}