finished login stg 1
This commit is contained in:
2806
interfaceServices/api.php
Normal file
2806
interfaceServices/api.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,15 +1,32 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/* development only */
|
||||||
|
header("Access-Control-Allow-Origin: *");
|
||||||
|
|
||||||
|
require '../vendor/autoload.php';
|
||||||
|
|
||||||
|
use Lcobucci\JWT\Builder;
|
||||||
|
use Lcobucci\JWT\Signer\Hmac\Sha256;
|
||||||
|
|
||||||
$username = $_POST["userName"];
|
$username = $_POST["userName"];
|
||||||
$password = $_POST["password"];
|
$password = $_POST["password"];
|
||||||
|
|
||||||
if( $username == "admin" && $password == "admin" ){
|
if( $username == "admin" && $password == "admin" ){
|
||||||
|
|
||||||
|
$signer = new Sha256();
|
||||||
|
$token = (new Builder())
|
||||||
|
->setIssuer("http://pugludos.com")
|
||||||
|
->setIssuedAt(time())
|
||||||
|
->set("userName", "ckoch")
|
||||||
|
->sign($signer, "testing")
|
||||||
|
->getToken();
|
||||||
|
|
||||||
$userData = array();
|
$userData = array();
|
||||||
$userDatap["id"] = "12345";
|
$userDatap["id"] = "12345";
|
||||||
$userDatap["username"] = "admin";
|
$userDatap["username"] = "admin";
|
||||||
$userDatap["firstName"] = "TestFirst";
|
$userDatap["firstName"] = "TestFirst";
|
||||||
$userDatap["lastName"] = "TestLast";
|
$userDatap["lastName"] = "TestLast";
|
||||||
$userDatap["token"] = "fake-jwt-token";
|
$userDatap["token"] = (string)$token;
|
||||||
|
|
||||||
echo( json_encode( $userDatap ) );
|
echo( json_encode( $userDatap ) );
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ use Lcobucci\JWT\Builder;
|
|||||||
use Lcobucci\JWT\Signer\Hmac\Sha256;
|
use Lcobucci\JWT\Signer\Hmac\Sha256;
|
||||||
|
|
||||||
$signer = new Sha256();
|
$signer = new Sha256();
|
||||||
|
|
||||||
$token = (new Builder())->setIssuer("http://pugludos.com")
|
$token = (new Builder())->setIssuer("http://pugludos.com")
|
||||||
->setIssuedAt(time())
|
->setIssuedAt(time())
|
||||||
->setExpiration(time() + 3600)
|
->setExpiration(time() + 3600)
|
||||||
@@ -1,19 +1,24 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/* development only */
|
||||||
|
header("Access-Control-Allow-Origin: *");
|
||||||
|
|
||||||
|
require '../vendor/autoload.php';
|
||||||
require 'dbConfig.php';
|
require 'dbConfig.php';
|
||||||
|
|
||||||
|
use Lcobucci\JWT\Builder;
|
||||||
|
use Lcobucci\JWT\Signer\Hmac\Sha256;
|
||||||
|
|
||||||
|
|
||||||
$passwordSalt = "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824";
|
$passwordSalt = "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824";
|
||||||
|
|
||||||
if(isset($_GET['login'])) {
|
$userName = $_POST['userName'];
|
||||||
|
$password = $_POST['password'];
|
||||||
$userName = $_GET['userName'];
|
|
||||||
$password = $_GET['password'];
|
|
||||||
|
|
||||||
$hashedPassword = crypt( $password, $passwordSalt );
|
$hashedPassword = crypt( $password, $passwordSalt );
|
||||||
|
|
||||||
|
|
||||||
$stmt = $connect->prepare('SELECT userId, password FROM users WHERE userName = :userName');
|
$stmt = $connect->prepare('SELECT * FROM users WHERE userName = :userName');
|
||||||
$stmt->execute(array(
|
$stmt->execute(array(
|
||||||
':userName' => $userName
|
':userName' => $userName
|
||||||
));
|
));
|
||||||
@@ -21,18 +26,37 @@ if(isset($_GET['login'])) {
|
|||||||
$data = $stmt->fetch(PDO::FETCH_ASSOC);
|
$data = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
if( $data == false ){
|
if( $data == false ){
|
||||||
//$errMsg = "User $username not found.";
|
http_response_code(400);
|
||||||
echo(0);
|
die();
|
||||||
}else {
|
}else {
|
||||||
if( hash_equals($hashedPassword,$data['password'] ) ) {
|
if( hash_equals($hashedPassword,$data['password'] ) ) {
|
||||||
echo("valid");
|
if( $data['userName'] == "ckoch" ){
|
||||||
exit;
|
$signer = new Sha256();
|
||||||
|
$token = (new Builder())
|
||||||
|
->setIssuer("http://pugludos.com")
|
||||||
|
->setIssuedAt(time())
|
||||||
|
->set("userName", $data['userId'])
|
||||||
|
->sign($signer, "testing")
|
||||||
|
->getToken();
|
||||||
|
|
||||||
|
$userData = array();
|
||||||
|
$userDatap["id"] = $data['userId'];
|
||||||
|
$userDatap["username"] = $data['userName'];
|
||||||
|
$userDatap["firstName"] = $data['firstName'];
|
||||||
|
$userDatap["lastName"] = $data['lastName'];
|
||||||
|
$userDatap["email"] = $data['email'];
|
||||||
|
$userDatap["token"] = (string)$token;
|
||||||
|
|
||||||
|
echo( json_encode( $userDatap ) );
|
||||||
|
die();
|
||||||
}else{
|
}else{
|
||||||
echo("d");
|
http_response_code(400);
|
||||||
echo($hashedPassword . "<br />" . $data['password'] );
|
die();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
http_response_code(400);
|
||||||
|
die();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
@@ -8,12 +8,10 @@ export class AuthGuard implements CanActivate {
|
|||||||
|
|
||||||
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
|
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
|
||||||
if (localStorage.getItem('currentUser')) {
|
if (localStorage.getItem('currentUser')) {
|
||||||
// logged in so return true
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// not logged in so redirect to login page with the return url
|
this.router.navigate( ['login'] );
|
||||||
this.router.navigate(['login'], { queryParams: { returnUrl: state.url }});
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,2 +1 @@
|
|||||||
export * from './jwt.interceptor';
|
export * from './fake-backend';
|
||||||
export * from './fake-backend';
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
||||||
import { Observable } from 'rxjs/Observable';
|
|
||||||
|
|
||||||
@Injectable()
|
|
||||||
export class JwtInterceptor implements HttpInterceptor {
|
|
||||||
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
|
|
||||||
// add authorization header with jwt token if available
|
|
||||||
let currentUser = JSON.parse(localStorage.getItem('currentUser'));
|
|
||||||
if (currentUser && currentUser.token) {
|
|
||||||
request = request.clone({
|
|
||||||
setHeaders: {
|
|
||||||
Authorization: `Bearer ${currentUser.token}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return next.handle(request);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -11,7 +11,12 @@ const httpOptions = {
|
|||||||
@Injectable()
|
@Injectable()
|
||||||
export class AuthenticationService {
|
export class AuthenticationService {
|
||||||
|
|
||||||
loginUrl = "http://192.241.155.78/interfaceServices/fake_loginInterface.php";
|
/* testing */
|
||||||
|
loginUrl = "http://pugludos.com/interfaceServices/loginInterface.php";
|
||||||
|
|
||||||
|
/* production */
|
||||||
|
//loginUrl = "/interfaceServices/fake_loginInterface.php";
|
||||||
|
|
||||||
params;
|
params;
|
||||||
|
|
||||||
constructor(private http: HttpClient) { }
|
constructor(private http: HttpClient) { }
|
||||||
@@ -35,7 +40,6 @@ export class AuthenticationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
logout() {
|
logout() {
|
||||||
// remove user from local storage to log user out
|
|
||||||
localStorage.removeItem('currentUser');
|
localStorage.removeItem('currentUser');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,12 +5,13 @@ import { GameGridComponent } from './game-grid/game-grid.component'
|
|||||||
import { ViewCardComponent } from './view-card/view-card.component'
|
import { ViewCardComponent } from './view-card/view-card.component'
|
||||||
import { LoginComponent } from './login/login.component'
|
import { LoginComponent } from './login/login.component'
|
||||||
import { RegisterComponent } from './register/register.component'
|
import { RegisterComponent } from './register/register.component'
|
||||||
|
import { AuthGuard } from './_guards/index';
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{ path: '', redirectTo: '/login', pathMatch: 'full' },
|
{ path: '', redirectTo: '/login', pathMatch: 'full' },
|
||||||
{ path: 'game-grid', component: GameGridComponent },
|
{ path: 'game-grid', component: GameGridComponent, canActivate: [AuthGuard] },
|
||||||
{ path: 'view-card', component: ViewCardComponent },
|
{ path: 'view-card', component: ViewCardComponent, canActivate: [AuthGuard] },
|
||||||
{ path: 'view-card/:gid', component: ViewCardComponent },
|
{ path: 'view-card/:gid', component: ViewCardComponent, canActivate: [AuthGuard] },
|
||||||
{ path: 'login', component: LoginComponent },
|
{ path: 'login', component: LoginComponent },
|
||||||
{ path: 'register', component: RegisterComponent }
|
{ path: 'register', component: RegisterComponent }
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import { fakeBackendProvider } from './_helpers/index';
|
|||||||
|
|
||||||
import { AlertComponent } from './_directives/index';
|
import { AlertComponent } from './_directives/index';
|
||||||
import { AuthGuard } from './_guards/index';
|
import { AuthGuard } from './_guards/index';
|
||||||
import { JwtInterceptor } from './_helpers/index';
|
|
||||||
import { AlertService, AuthenticationService, UserService } from './_services/index';
|
import { AlertService, AuthenticationService, UserService } from './_services/index';
|
||||||
|
|
||||||
|
|
||||||
@@ -73,12 +72,6 @@ import { AlertService, AuthenticationService, UserService } from './_services/in
|
|||||||
AlertService,
|
AlertService,
|
||||||
AuthenticationService,
|
AuthenticationService,
|
||||||
UserService,
|
UserService,
|
||||||
{
|
|
||||||
provide: HTTP_INTERCEPTORS,
|
|
||||||
useClass: JwtInterceptor,
|
|
||||||
multi: true
|
|
||||||
},
|
|
||||||
|
|
||||||
// provider used to create fake backend
|
// provider used to create fake backend
|
||||||
fakeBackendProvider
|
fakeBackendProvider
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<button class="mat-button userButton" mat-button >
|
<button class="mat-button userButton" mat-button >
|
||||||
<img src="https://i.pinimg.com/280x280_RS/88/42/df/8842df04cd938aa654c865742253c276.jpg" > Christopher
|
<img src="https://i.pinimg.com/280x280_RS/88/42/df/8842df04cd938aa654c865742253c276.jpg" > <span *ngIf="isEmptyObject(currentUser)">{{currentUser.username}}</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<mat-menu #settingsMenu="matMenu">
|
<mat-menu #settingsMenu="matMenu">
|
||||||
<button mat-menu-item>Settings</button>
|
<button mat-menu-item>Settings</button>
|
||||||
<button mat-menu-item>Help</button>
|
<button mat-menu-item>Help</button>
|
||||||
<button mat-menu-item>Log out</button>
|
<button mat-menu-item (click)="logOut()">Log out</button>
|
||||||
</mat-menu>
|
</mat-menu>
|
||||||
|
|
||||||
<button class="mat-icon-button" mat-icon-button [matMenuTriggerFor]="settingsMenu">
|
<button class="mat-icon-button" mat-icon-button [matMenuTriggerFor]="settingsMenu">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { ActivatedRoute } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
|
||||||
import { GamesService } from '../games.service';
|
import { GamesService } from '../games.service';
|
||||||
import {PageEvent} from '@angular/material';
|
import {PageEvent} from '@angular/material';
|
||||||
@@ -27,15 +27,18 @@ export class GameGridComponent implements OnInit {
|
|||||||
pageSize = 10;
|
pageSize = 10;
|
||||||
pageSizeOptions = [5, 10, 25, 50, 100];
|
pageSizeOptions = [5, 10, 25, 50, 100];
|
||||||
|
|
||||||
|
currentUser;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private route: ActivatedRoute,
|
private route: ActivatedRoute,
|
||||||
private gamesService: GamesService
|
private gamesService: GamesService,
|
||||||
|
private router: Router
|
||||||
){
|
){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
this.currentUser = JSON.parse(localStorage.getItem('currentUser'));
|
||||||
this.getGamesList();
|
this.getGamesList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,6 +84,11 @@ export class GameGridComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logOut(){
|
||||||
|
localStorage.removeItem('currentUser');
|
||||||
|
this.router.navigate( ['login'] );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const httpOptionsPut = {
|
|||||||
@Injectable()
|
@Injectable()
|
||||||
export class GamesService {
|
export class GamesService {
|
||||||
|
|
||||||
APIURL = "http://192.241.155.78/api.php";
|
APIURL = "http://pugludos.com/interfaceServices/api.php";
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private http: HttpClient
|
private http: HttpClient
|
||||||
@@ -36,7 +36,8 @@ export class GamesService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getGames( queryFilters, querryPage, queryOrder, queryRecordMax ): Observable<any> {
|
getGames( queryFilters, querryPage, queryOrder, queryRecordMax ): Observable<any> {
|
||||||
return this.http.get( this.APIURL + "/games?filter="+ queryFilters +"&page="+ querryPage + "," + queryRecordMax +"&order="+ queryOrder +"&transform=1" )
|
let currentUser = JSON.parse(localStorage.getItem('currentUser'));
|
||||||
|
return this.http.get( this.APIURL + "/games?filter="+ queryFilters +"&page="+ querryPage + "," + queryRecordMax +"&order="+ queryOrder +"&transform=1&token=" + currentUser.token )
|
||||||
.map(res => {
|
.map(res => {
|
||||||
return(
|
return(
|
||||||
res
|
res
|
||||||
|
|||||||
@@ -62,20 +62,6 @@ export class LoginComponent implements OnInit {
|
|||||||
return formValidators;
|
return formValidators;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
onSubmit( form ){
|
|
||||||
this.registrationService.loginUser( form ).subscribe( data => {
|
|
||||||
//this.router.navigate([this.returnUrl]);
|
|
||||||
console.log( "valid" );
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
console.log( "you suck, no long for you!" );
|
|
||||||
//this.alertService.error(error);
|
|
||||||
//this.loading = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
login( form ) {
|
login( form ) {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
this.authenticationService.login( form )
|
this.authenticationService.login( form )
|
||||||
|
|||||||
Reference in New Issue
Block a user