Merge remote-tracking branch 'origin/master'

This commit is contained in:
omair saleh
2021-07-30 21:23:59 +08:00
35 changed files with 1672 additions and 121 deletions
@@ -0,0 +1,28 @@
<?php
namespace App\Classes\Modules\Accounts\Services;
use App\Classes\Exceptions\MalformedRequestException;
use App\Classes\General\Eloquent\AbstractUpdateRecord;
use App\Models\PasswordReset;
class ExpiresPasswordReset extends AbstractUpdateRecord
{
/**
* @param PasswordReset $model
* @return \Illuminate\Database\Eloquent\Model
* @throws MalformedRequestException
*/
public function execute(PasswordReset $model){
$model->is_expired = true;
return $this->handler($model);
}
}
@@ -55,6 +55,7 @@ class GeneratesAuthenticationToken {
/** @var Company $companyModule */
$companyModule = $user->companyModule()->first();
$order = $companyModule->orders->count();
$claims = [
'id' => $user->id,
@@ -66,7 +67,9 @@ class GeneratesAuthenticationToken {
if($user->type === RoleTypes::USER) {
$claims = array_merge($claims, [
'company_id' => $companyModule->company_id
'company_id' => $companyModule->company_id,
'company_module_id' => $companyModule->id,
'order' => $order
]);
}
+11
View File
@@ -6,6 +6,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
@@ -56,6 +58,15 @@ class CompanyModule extends AbstractModel
return $this->belongsToMany(User::class, (new CompanyEmployee())->getTable(), 'company_module_id', 'user_id');
}
/**
* @return HasMany
*/
public function orders(): HasMany
{
return $this->HasMany(Order::class, 'company_module_id');
}
// /**
// * @return HasMany
// */
@@ -45,6 +45,6 @@ class CreateBanksTable extends Migration
*/
public function down()
{
Schema::dropIfExists('banks');
Schema::dropIfExists('bank_accounts');
}
}
+113
View File
@@ -0,0 +1,113 @@
@page {
header: page-header;
footer: page-footer;
}
body {
font-family: sun-extA;
}
.header {
margin-top: 5em;
}
.sidebar {
width: 285px;
position: fixed;
top: 0;
bottom: 0;
left: 0;
z-index: 100;
padding: 0 15px 0 15px; /* Height of navbar */
/* box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); */
}
.sidebar-sticky {
position: relative;
top: 0;
height: calc(100vh - 48px);
padding-top: .5rem;
overflow-x: hidden;
overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
}
@supports ((position: -webkit-sticky) or (position: sticky)) {
.sidebar-sticky {
position: -webkit-sticky;
position: sticky;
}
}
.sidebar .nav-link {
font-weight: 500;
color: #333;
}
.sidebar .nav-link .feather {
margin-right: 4px;
color: #999;
}
.sidebar .nav-link.active {
color: #007bff;
}
.sidebar .nav-link:hover .feather,
.sidebar .nav-link.active .feather {
color: inherit;
}
.sidebar-heading {
font-size: .75rem;
text-transform: uppercase;
}
.navbar-brand {
padding-top: .75rem;
padding-bottom: .75rem;
font-size: 1rem;
background-color: rgba(0, 0, 0, .25);
box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25);
}
.navbar .navbar-toggler {
top: .25rem;
right: 1rem;
}
.navbar .form-control {
padding: .75rem 1rem;
border-width: 0;
border-radius: 0;
}
.form-control-dark {
color: #fff;
background-color: rgba(255, 255, 255, .1);
border-color: rgba(255, 255, 255, .1);
}
.form-control-dark:focus {
border-color: transparent;
box-shadow: 0 0 0 3px rgba(255, 255, 255, .25);
}
.text-menu {
color: #a6a6a6;
font-size: 16px;
}
.board {
width: 100%;
height: 180px;
background: -webkit-linear-gradient(#503C93, #912873);
background: linear-gradient(#503C93, #912873);
}
.text-small {
font-size: 12px;
}
.btn-white {
background-color: #ffffff !important;
}
+2
View File
@@ -32,6 +32,8 @@
@import "modules";
// Responsive Util
@import "responsive";
// Import custom
@import "custom";
@@ -0,0 +1,77 @@
<template>
<div class="row h-100 align-items-center justify-content-center text-center">
<div class="col">
<loading-component style="height: 200px; top: 0;" key="1" color="white" v-show="loading"></loading-component>
<div class="row" v-show="!loading">
<div class="col">
<div class="row justify-content-center m-b-20">
<div class="col-4">
<i class="fa fs-80 text-white" :class="[{'fa-check-circle': !error}, {'fa-times': error}]"></i>
</div>
</div>
<div class="row">
<div class="col">
<div class="font-heading text-white fs-20 all-caps bold lh-25">Email {{error ? 'Failed Verification': 'Verified'}}</div>
<div class="font-heading text-white fs-12 all-caps m-b-10 lh-25">Your Email address was{{ error ? 'n\'t' : '' }} successfully verified</div>
<div class="font-heading text-white fs-12 all-caps m-b-20 lh-25">{{ error }}</div>
</div>
</div>
<div class="row">
<div class="col">
<a class="btn btn p-t-10 p-b-10 btn-primary bg-master-darker b-rad-none" :href="route('login')">
<div class="row align-items-center">
<div class="col-auto p-r-10">
<i class="fa fa-angle-left fs-16" style="margin-top: 1px;"></i>
</div>
<div class="col p-l-5">
Back to login
</div>
</div>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
token:{
type: String,
required: false
}
},
data(){
return {
loading: true,
error: '',
parameters: {
token: this.token
}
}
},
created(){
this.submit(this.route('api.account.email.verify'), 'post', 'emailVerificationSection', false, false);
},
methods: {
successHandler(){
this.loading = false
this.error = '';
//this.$store.getters.isAuthenticated ? window.location.href = this.route('dashboard'): this.loading = false;;
},
errorHandler(error){
this.loading = false;
this.error = error.message;
}
}
}
</script>
@@ -0,0 +1,78 @@
<template>
<div class="row">
<div class="col">
<div class="row m-b-20 animate__animated animate__fadeInUpBig animate__fast" v-if="error">
<div class="col">
<small class="bold fs-10 text-danger">{{error}}</small>
</div>
</div>
<div class="row">
<div class="col">
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.email">
<label class="text-primary">Email Address</label>
<div class="controls">
<input type="text" class="form-control fs-12" v-model="parameters.email">
</div>
</validation-wrapper-component>
<validation-wrapper-component :validator="$v.parameters.password">
<label class="text-primary">Password</label>
<div class="controls">
<input type="password" class="form-control fs-12" v-model="parameters.password">
</div>
</validation-wrapper-component>
<div class="row m-t-15 align-items-center justify-content-center">
<div class="col-auto">
<div class="font-heading fs-12" style="line-height: 0px;">
<input type="checkbox" v-model="parameters.remember">
<label class="text-primary">Remember</label>
</div>
</div>
<div class="col text-right">
<p class="muted fs-11 font-arial m-b-0 pointer" @click="$store.dispatch('toggleSection', {name: 'forgetPassword', status: true})">Forgot password?</p>
</div>
</div>
<div class="row m-t-15">
<div class="col text-center">
<div class="col btn btn-sm p-l-30 p-r-30 btn-primary bold v-align-middle b-rad-none all-caps" @click="submitForm">Sign In</div>
</div>
</div>
<div class="row m-t-15">
<div class="col text-center">
<div class="col">
<p>New Customer? <strong class=" m-b-0 pointer" @click="$store.dispatch('toggleSection', {name: 'registrationSection', status: true})">Create Account</strong></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import loginFormValidation from '../../../general/mixins/accounts/validation/loginFormValidation'
export default {
props: {
section:{
type: String,
required: true
}
},
data() {
return {
error: '',
parameters: {
email: this.email,
password: '',
remember:''
}
};
},
methods: {
submitForm(){
this.submit(this.route('api.account.authentication.authenticate.attempt'), 'post', this.section, false, false)
}
},
mixins: [loginFormValidation]
}
</script>
@@ -0,0 +1,63 @@
<template>
<div class="row h-100 parentContainer">
<div class="col">
<div class="row align-items-center justify-content-center b-a b-thick h-100 pointer requestModal" data-type="logoutModal" style="border-color: #ffffff3d">
<div class="col m-t-15 m-b-20 m-r-15 ">
<a class="fs-12 light" style="color: #3c3c3c;" href="#">Sign Out</a>
<loading-component class="fixed-top h-100 bg-white" style="height: 200px; top: 0;" key="1" color="success" v-show="loading"></loading-component>
</div>
</div>
<modal-component styleType="fill-in" type="logoutModal">
<div class="row">
<div class="col text-center">
<div class="row m-b-20">
<div class="col">
<div class="row text-center">
<div class="col">
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
width="64" height="64"
viewBox="0 0 172 172"
style=" fill:#000000;"><defs><linearGradient x1="86" y1="73.90625" x2="86" y2="102.15725" gradientUnits="userSpaceOnUse" id="color-1_48180_gr1"><stop offset="0" stop-color="#f6ab9c"></stop><stop offset="1" stop-color="#f6ab9c"></stop></linearGradient><linearGradient x1="86" y1="12.09375" x2="86" y2="161.54563" gradientUnits="userSpaceOnUse" id="color-2_48180_gr2"><stop offset="0" stop-color="#ed5335"></stop><stop offset="1" stop-color="#ed5335"></stop></linearGradient><linearGradient x1="86" y1="12.09375" x2="86" y2="161.54563" gradientUnits="userSpaceOnUse" id="color-3_48180_gr3"><stop offset="0" stop-color="#ed5335"></stop><stop offset="1" stop-color="#ed5335"></stop></linearGradient><linearGradient x1="86" y1="12.09375" x2="86" y2="161.54563" gradientUnits="userSpaceOnUse" id="color-4_48180_gr4"><stop offset="0" stop-color="#ed5335"></stop><stop offset="1" stop-color="#ed5335"></stop></linearGradient></defs><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><path d="M0,172v-172h172v172z" fill="none"></path><g><path d="M86,77.9375c-5.93706,0 -10.75,4.81294 -10.75,10.75c0,5.93706 4.81294,10.75 10.75,10.75c5.93706,0 10.75,-4.81294 10.75,-10.75c0,-5.93706 -4.81294,-10.75 -10.75,-10.75z" fill="url(#color-1_48180_gr1)"></path><path d="M112.89113,27.10075l-2.15269,4.9235c22.52125,9.84431 37.07406,32.08606 37.07406,56.66325c0,34.08556 -27.72694,61.8125 -61.8125,61.8125c-34.08556,0 -61.8125,-27.72694 -61.8125,-61.8125c0,-24.5745 14.55013,-46.81356 37.07138,-56.66325l-2.15269,-4.9235c-24.48044,10.70163 -40.29369,34.87838 -40.29369,61.58675c0,37.04719 30.14031,67.1875 67.1875,67.1875c37.04719,0 67.1875,-30.14031 67.1875,-67.1875c0,-26.71106 -15.81862,-50.88781 -40.29637,-61.58675z" fill="url(#color-2_48180_gr2)"></path><path d="M86,134.375c-25.19263,0 -45.6875,-20.49487 -45.6875,-45.6875c0,-15.28381 7.59219,-29.48725 20.30944,-37.99587l-2.99388,-4.46663c-14.20881,9.50837 -22.69056,25.38613 -22.69056,42.4625c0,28.15694 22.90556,51.0625 51.0625,51.0625c28.15694,0 51.0625,-22.90556 51.0625,-51.0625c0,-17.14356 -8.5355,-33.05088 -22.83031,-42.55387l-2.97506,4.47738c12.7925,8.50325 20.43037,22.73625 20.43037,38.0765c0,25.19263 -20.49487,45.6875 -45.6875,45.6875z" fill="url(#color-3_48180_gr3)"></path><path d="M72.40394,48.375h10.90856v27.14644c-5.375,1.24969 -10.75,6.67575 -10.75,13.16606c0,7.40944 6.02806,13.4375 13.4375,13.4375c7.40944,0 13.4375,-6.02806 13.4375,-13.4375c0,-6.49031 -5.375,-11.91638 -10.75,-13.16606v-27.14644h10.90587c1.86244,0 3.59856,-0.96481 4.52575,-2.52356c0.88956,-1.49156 0.9245,-3.29219 0.09675,-4.816l-11.33856,-20.92487c-1.33031,-2.45906 -3.96406,-3.98556 -6.87731,-3.98556c-2.91325,0 -5.547,1.5265 -6.88,3.98288l-11.33856,20.92488c-0.82775,1.52381 -0.79281,3.32444 0.09675,4.816c0.92719,1.56144 2.66331,2.52625 4.52575,2.52625zM94.0625,88.6875c0,4.44512 -3.61738,8.0625 -8.0625,8.0625c-4.44512,0 -8.0625,-3.61738 -8.0625,-8.0625c0,-4.44512 3.61737,-8.0625 8.0625,-8.0625c4.44512,0 8.0625,3.61737 8.0625,8.0625zM83.84463,22.67175c0.58856,-1.08844 1.79794,-1.17175 2.15537,-1.17175c0.35744,0 1.56681,0.08331 2.15537,1.17175l11.01606,20.33094l-26.41275,0.13438z" fill="url(#color-4_48180_gr4)"></path></g></g></svg>
</div>
</div>
<h3 class="all-caps">Are you leaving?</h3>
<div class="fs-11">Are you sure you want to log out ? You will return to the login screen.</div>
</div>
</div>
<div class="row">
<div class="col p-r-5">
<div class="btn btn-sm btn-default btn-block b-rad-none" data-dismiss="modal">Stay Here</div>
</div>
<div class="col p-l-5">
<div class="btn btn-sm btn-danger btn-block b-rad-none" data-dismiss="modal" @click="logout()">Logout</div>
</div>
</div>
</div>
</div>
</modal-component>
</div>
</div>
</template>
<script>
export default {
data(){
return {
loading: false
}
},
methods:{
logout(){
this.loading = true;
this.submit(this.route('api.account.authentication.logout'), 'get', this.section, false, false)
},
successHandler(){
this.$store.dispatch('userAuthentication', {access_token: '', redirect_url: this.route('login')});
},
errorHandler(){
this.$store.dispatch('userAuthentication', {access_token: '', redirect_url: this.route('login')});
}
}
}
</script>
@@ -28,6 +28,13 @@
<div class="btn btn-block btn-lg btn-primary b-rad-none no-border" @click="submitForm">Sign In</div>
</div>
</div>
<div class="row m-t-15">
<div class="col text-center">
<div class="col">
<p>New Customer? <strong class=" m-b-0 pointer" @click="$store.dispatch('toggleSection', {name: 'registrationSection', status: true})">Create Account</strong></p>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,84 @@
<template>
<div>
<div class="row">
<div class="col">
<div class="row m-b-20">
<div class="col">
<div class="fs-11 muted">{{status.message}}</div>
</div>
</div>
<validation-wrapper-component class="m-b-15" :validator="$v.parameters.email">
<label class="text-primary">Email Address</label>
<div class="controls">
<input type="text" autocomplete="nope" class="form-control fs-12" v-model="watchCheckEmail">
</div>
</validation-wrapper-component>
</div>
</div>
<div class="row">
<div class="col">
<div class="row">
<div class="col">
<button type="button" class="btn btn-sm p-t-10 p-b-10 btn-default bg-master-lighter b-rad-none" @click="changeStep('back')">
<div class="row align-items-center">
<div class="col-auto p-r-10">
<i class="fa fa-angle-left fs-16" style="margin-top: 1px;"></i>
</div>
<div class="col p-l-5">Back To Login</div>
</div>
</button>
</div>
<div class="col text-right">
<button type="button" class="btn btn-sm p-t-10 p-b-10 p-r-35 p-l-35 btn-primary b-rad-none" @click="changeStep('next')" :disabled=!status.error>Next</button>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import registrationCheckEmailValidation from '../../../general/mixins/accounts/validation/registrationCheckEmailValidation';
import stepNavi from '../../../general/mixins/stepNavi';
export default {
data() {
return {
parameters : {
email: '',
},
status:{
error:false,
message:null,
direction:null,
email:null
},
watchCheckEmail:null,
}
},
watch: {
watchCheckEmail(value){
this.parameters.email = value;
if(this.validate()){
this.submit(this.route('api.account.authentication.authenticate.email.check'), 'post', 'registrationSection', false, false);
}
}
},
methods:{
changeStep(direction){
if(direction === 'next'){
if(this.validate()){
this.step += 1;
this.status.direction = direction;
this.status.email = this.parameters.email;
this.$emit('updateStatus',this.status);
}
return;
}
this.$v.$reset();
this.$store.dispatch('toggleSection', {name: 'registrationSection', status: false});
},
},
beforeDestroy: function(){
},
mixins: [registrationCheckEmailValidation]
}
</script>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,39 @@
<template>
<div class="row">
<div class="col ">
<div class="col">
<div class="row m-b-20">
<div class="col">
<div class="font-heading fs-18 text-primary all-caps">Create Account</div>
</div>
</div>
<error-message-component class="m-b-20" :error="error"></error-message-component>
<registration-check-email-form-component section="loginSection" :key="Math.round(+new Date()/1000)" v-if="step === 1" v-on:updateStatus="updateStatus($event)"></registration-check-email-form-component>
<registration-form-component section="loginSection" v-if="step === 2" :key="Math.round(+new Date()/1000)" v-on:updateStatus="updateStatus($event)" :email=parameters.email></registration-form-component>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
error: '',
step: 1,
parameters : {
email: ''
},
}
},
methods:{
updateStatus(event){
if(event.direction === 'next'){
this.parameters.email =event.email;
this.step += 1;
}else if(event.direction === 'back'){
this.step -= 1;
}
},
}
}
</script>
@@ -0,0 +1,21 @@
<template>
<div class="row">
<h1>Dashboard</h1>
</div>
</template>
<script>
export default {
data(){
return {
}
},
computed: {
},
watch: {
},
created(){
},
methods: {
}
}
</script>
@@ -24,7 +24,7 @@
case 'primary':
return '#912873';
case 'success':
return '#349128';
return '#912873';
case 'danger':
return '#F3201F';
case 'white':
@@ -0,0 +1,23 @@
import errorMessageHandler from "../errorMessageHandler";
import formHandler from "../formHandler";
export default {
methods: {
successHandler(response){
this.formHandler('');
this.status = {
message:response.message,
error:false
}
},
errorHandler(error){
this.formHandler(error.message);
this.status = {
message:"",
error:true
}
}
},
mixins: [errorMessageHandler, formHandler]
}
@@ -0,0 +1,13 @@
import { required, email } from "vuelidate/lib/validators";
import checkEmailHandler from '../checkEmailHandler'
export default {
validations: {
parameters: {
email: {
required,
email
},
}
},
mixins: [checkEmailHandler]
}
@@ -4,10 +4,10 @@ export default {
validations: {
parameters: {
name: {
required
required,
},
email: {
required: requiredIf(function () { return this.step === 2 }),
required,
email
},
company_name: {
@@ -18,12 +18,18 @@ export default {
numeric
},
password: {
required: requiredIf(function () { return this.step === 2 }),
required
},
password_confirmation: {
required: requiredIf(function () { return this.step === 2 }),
required,
sameAs: sameAs('password')
}
},
identification_no:{
required
},
files:{
required
},
}
},
mixins: [authenticationHandler]
+22
View File
@@ -0,0 +1,22 @@
export default {
methods: {
changeStep(direction) {
this.status.direction = direction;
if (direction === 'next') {
if (this.validate()) {
//this.step += 1;
this.status.email = this.parameters.email;
this.$emit('updateStatus', this.status);
}
return;
}
this.$emit('updateStatus', this.status);
this.$v.$reset();
},
},
beforeDestroy: function (event) {
},
}
+2
View File
@@ -17,6 +17,8 @@ export default {
getUserId: (state, getters) => getters.getDecodedAccessToken.user.id,
getUserEmail: (state, getters) => getters.getDecodedAccessToken.user.email,
getCompanyId: (state, getters) => getters.getDecodedAccessToken.user.company_id,
getCompanyModuleId: (state, getters) => getters.getDecodedAccessToken.user.company_module_id,
getOrder: (state, getters) => getters.getDecodedAccessToken.user.order,
getDecodedAccessToken(state) {
try{
+1 -3
View File
@@ -1,7 +1,5 @@
@extends('layouts.base')
@section('content')
@yield('inner_content')
@yield('inner_content')
@endsection
@@ -2,6 +2,7 @@
@section('content')
@include('partials.header')
@include('partials.menu')
<div class="page-container">
<div class="page-content-wrapper p-b-50" style="padding-top: 70px;">
<div class="content pt-md-auto pt-4">
@@ -0,0 +1,13 @@
@extends('layouts.base_login')
@section('inner_content')
<div class="row">
<div class="col p-l-0 p-r-0 p-t-15 p-b-15">
<div class="row justify-content-center h-100">
<div class="col-8 p-t-50 p-b-50 bg-primary">
<email-verification-component token="{{$token}}"></email-verification-component>
</div>
</div>
</div>
</div>
@endsection
+16 -2
View File
@@ -1,7 +1,7 @@
@extends('layouts.base_login')
@section('inner_content')
<div class="row h-100">
<div class="row h-100" v-show="!$store.getters.isShowing('registrationSection')">
<div class="col bg-white">
<div class="row h-100 no-margin align-items-center justify-content-center">
<div class="col-12 col-md-8" v-show="!$store.getters.isShowing('registrationForm')">
@@ -57,7 +57,7 @@
</div>
</div>
</div>
<div class="col h-100 bg-info-primary-gradient">
<div class="col h-100 bg-info-primary-gradient" >
<div class="row h-100 align-items-center justify-content-center">
<div class="absolute hint-text dotted-grid" style="width: 250px; height: 142px; bottom: 0; right: 0; "></div>
<div class="absolute hint-text dotted-grid" style="width: 200px; height: 135px; top: 140px; left: 100px;"></div>
@@ -123,7 +123,21 @@
</div>
</div>
</div>
</div>
</div>
<div class="row h-100" v-show="$store.getters.isShowing('registrationSection')">
<div class="col">
<div class="row h-100 no-margin align-items-center justify-content-center">
<div class="col-12 col-md-8">
<loading-component style="height: 350px;" key="1" color="primary" v-show="$store.getters.isLoading('loginSection')"></loading-component>
<div class="row justify-content-center" v-show="!$store.getters.isLoading('loginSection')">
<div class="col-8">
<registration-section-component section="loginSection"></registration-section-component>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,74 @@
@extends('layouts.base_login')
@section('inner_content')
<transition-component group enter-class="animate__animated animate__fadeInRightBig animate__faster" leave-class="animate__animated animate__fadeOutRightBig" class="h-100">
<div class="row h-100 m-auto" key="1" v-show="!$store.getters.isShowing('resetPasswordSuccess')">
<div class="col d-flex align-items-start flex-column">
<div class="row invisible">
<div class="col-auto p-l-0 p-r-0 ml-auto" style="background-color: rgba(255,255,255,0.2);">
<div class="text-white font-lato lightest" style=" font-size: 150px; font-weight: 100; margin-right: -17px; margin-left: -183px; ">...</div>
</div>
</div>
<div class="row w-100">
<div class="col">
<div class="row">
<div class="col no-padding relative">
<transition-component group enter-class="animate__animated animate__fadeInUpBig animate__faster" leave-class="animate__animated animate__fadeOutRightBig">
<loading-component style="height: 350px;" key="1" color="primary" v-show="$store.getters.isLoading('resetPasswordSection')"></loading-component>
<div class="row" key="2" v-show="!$store.getters.isLoading('resetPasswordSection')">
<div class="col all-caps">
<div class="row m-l-0">
<div class="col p-l-50">
<h5 class="font-lato light animate__animated animate__fadeInRightBig animate__slow" style=" line-height: 50px; letter-spacing: 5px; ">Reset your password</h5>
</div>
</div>
<reset-password-form-component section="resetPasswordSection" token="{{$token}}"></reset-password-form-component>
</div>
</div>
</transition-component>
</div>
</div>
</div>
</div>
<div class="row mt-auto m-b-25">
<div class="col font-lato p-l-50">
<div class="row">
<div class="col">
<p class="all-caps fs-10 m-b-5" style="letter-spacing: 2px;">Support:</p>
</div>
</div>
<div class="row">
<div class="col">
<p class="all-caps no-margin fs-8 lh-18" style="letter-spacing: 2px;">To obtain access to this site or for any questions about its<br>use submit an email message to <span class="text-underline text-primary bold">info@izyim.com</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row align-items-center justify-content-center h-100 bg-white text-center" key="2" v-show="$store.getters.isShowing('resetPasswordSuccess')">
<div class="col">
<div class="row m-b-20 animate__animated animate__fadeInDownBig">
<div class="col">
<i class="fa fa-check-circle animate__animated animate__tada animate__slower animate__infinite fs-70 text-success"></i>
</div>
</div>
<div class="row animate__animated animate__fadeInLeftBig">
<div class="col">
<h5 class="all-caps fs-35 m-b-15 text-success">Password Changed</h5>
</div>
</div>
<div class="row animate__animated animate__fadeInRightBig">
<div class="col">
<small class="muted font-lato all-caps">Your password has been changed successfully</small>
</div>
</div>
<div class="row m-t-30 animate__animated animate__fadeInUpBig animate__slow">
<div class="col">
<a :href="route('login')" @click="$store.dispatch('toggleSection', {name: 'resetPasswordSuccess', status: false});$store.dispatch('toggleLoading', {name: 'resetPasswordSection', status: true})"><small class="b-a b-thick b-success text-success all-caps p-t-10 p-b-10 p-r-35 p-l-35 inline bold">Go to login</small></a>
</div>
</div>
</div>
</div>
</transition-component>
@endsection
File diff suppressed because one or more lines are too long
@@ -0,0 +1,5 @@
<div class="row d-none" :class="[{'d-flex': !$store.getters.isAdmin}]" v-if="!$store.getters.isAdmin">
<div class="col">
<customer-dashboard-section-component></customer-dashboard-section-component>
</div>
</div>
@@ -0,0 +1,5 @@
@extends('layouts.base_portal')
@section('inner_content')
@include('pages.dashboards.admin')
@include('pages.dashboards.customer')
@endsection
@@ -0,0 +1,206 @@
<!doctype html>
<html lang="en">
<head>
@include('vendor/head')
<style>
@page {
header: page-header;
footer: page-footer;
}
body {
font-family: sun-extA;
}
.header {
margin-top: 5em;
}
.sidebar {
width: 285px;
position: fixed;
top: 0;
bottom: 0;
left: 0;
z-index: 100;
padding: 0 15px 0 15px; /* Height of navbar */
/* box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); */
}
.sidebar-sticky {
position: relative;
top: 0;
height: calc(100vh - 48px);
padding-top: .5rem;
overflow-x: hidden;
overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
}
@supports ((position: -webkit-sticky) or (position: sticky)) {
.sidebar-sticky {
position: -webkit-sticky;
position: sticky;
}
}
.sidebar .nav-link {
font-weight: 500;
color: #333;
}
.sidebar .nav-link .feather {
margin-right: 4px;
color: #999;
}
.sidebar .nav-link.active {
color: #007bff;
}
.sidebar .nav-link:hover .feather,
.sidebar .nav-link.active .feather {
color: inherit;
}
.sidebar-heading {
font-size: .75rem;
text-transform: uppercase;
}
.navbar-brand {
padding-top: .75rem;
padding-bottom: .75rem;
font-size: 1rem;
background-color: rgba(0, 0, 0, .25);
box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25);
}
.navbar .navbar-toggler {
top: .25rem;
right: 1rem;
}
.navbar .form-control {
padding: .75rem 1rem;
border-width: 0;
border-radius: 0;
}
.form-control-dark {
color: #fff;
background-color: rgba(255, 255, 255, .1);
border-color: rgba(255, 255, 255, .1);
}
.form-control-dark:focus {
border-color: transparent;
box-shadow: 0 0 0 3px rgba(255, 255, 255, .25);
}
.text-menu {
color: #a6a6a6;
font-size: 16px;
}
.board {
width: 100%;
height: 180px;
background: -webkit-linear-gradient(#503C93, #912873);
background: linear-gradient(#503C93, #912873);
}
.text-small {
font-size: 12px;
}
.btn-white {
background-color: #ffffff !important;
}
</style>
</head>
<div class="d-flex flex-column align-items-end navbar navbar-dark bg-light flex-md-nowrap p-0 shadow">
<button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-toggle="collapse" data-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<ul class="navbar-nav px-3">
<li class="nav-item text-nowrap">
<a class="no-margin fs-12 light" style="color: #3c3c3c;" href="#">Sign Out</a>
</li>
</ul>
</div>
<div id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block sidebar" style="background-color: #f6f6f6">
<div class="py-sm-3">
<a href="#">
<img class="" src="https://www.izyim.com/images/logo.png" alt="" height="24">
</a>
</div>
<div class="sidebar-sticky pt-3 pb-4">
<div class="d-flex flex-column justify-content-between" style="height: 100%">
<div>
<div class="py-sm-3">
<span class="fs-14 all-caps">Main Menu</span>
</div>
<ul class="nav flex-column justify-content-between" style="height: 250px">
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-door" viewBox="0 0 16 16">
<path d="M8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4.5a.5.5 0 0 0 .5-.5v-4h2v4a.5.5 0 0 0 .5.5H14a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146zM2.5 14V7.707l5.5-5.5 5.5 5.5V14H10v-4a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v4H2.5z"/>
</svg>
Dashboard
</a>
</li>
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-journal-text" viewBox="0 0 16 16">
<path d="M5 10.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z"/>
<path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z"/>
<path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z"/>
</svg>
My Addresses
</a>
</li>
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-earmark-text" viewBox="0 0 16 16">
<path d="M5.5 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z"/>
<path d="M9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0zm0 1v2A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"/>
</svg>
My Orders
</a>
</li>
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box" viewBox="0 0 16 16">
<path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5 8 5.961 14.154 3.5 8.186 1.113zM15 4.239l-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z"/>
</svg>
My Packages
</a>
</li>
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-truck" viewBox="0 0 16 16">
<path d="M0 3.5A1.5 1.5 0 0 1 1.5 2h9A1.5 1.5 0 0 1 12 3.5V5h1.02a1.5 1.5 0 0 1 1.17.563l1.481 1.85a1.5 1.5 0 0 1 .329.938V10.5a1.5 1.5 0 0 1-1.5 1.5H14a2 2 0 1 1-4 0H5a2 2 0 1 1-3.998-.085A1.5 1.5 0 0 1 0 10.5v-7zm1.294 7.456A1.999 1.999 0 0 1 4.732 11h5.536a2.01 2.01 0 0 1 .732-.732V3.5a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .294.456zM12 10a2 2 0 0 1 1.732 1h.768a.5.5 0 0 0 .5-.5V8.35a.5.5 0 0 0-.11-.312l-1.48-1.85A.5.5 0 0 0 13.02 6H12v4zm-9 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm9 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/>
</svg>
Tracking
</a>
</li>
</ul>
</div>
<div class="container d-flex flex-column justify-content-between py-3 col-sx-12 rounded board">
<div class="inline v-align-middle">
<div class="text-white bold">Got Problems?</div>
<span class="text-white text-small normal">If you have any problems regarding your order, contact us now.</span>
</div>
<div class="absolute hint-text dotted-grid" style="width: 83px; height: 74px; margin-top: 80px; margin-left: 85px;"></div>
<div class="row m-t-15">
<div class="col text-center">
<div class="col btn btn-sm p-l-30 p-r-30 btn-white text-primary normal v-align-middle b-rad-1">Contact Us</div>
</div>
</div>
</div>
</div>
</div>
</div>
</html>
+11
View File
@@ -0,0 +1,11 @@
<!-- START COPYRIGHT -->
<div class="footer bg-white">
<div class="container-fluid">
<div class="row no-margin">
<div class="col p-l-0 p-t-20 p-b-20 sm-text-center">
<small class="small no-margin pull-left sm-pull-reset all-caps fs-10 muted" style=" letter-spacing: 1px; ">Copyright © 2021 CIEF IZYIM. All rights reserved.</small>
</div>
</div>
</div>
</div>
<!-- END COPYRIGHT -->
+12
View File
@@ -0,0 +1,12 @@
<div class="d-flex flex-column align-items-end navbar navbar-dark bg-light flex-md-nowrap p-0 shadow">
<button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-toggle="collapse"
data-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<ul class="navbar-nav px-3">
<li class="nav-item text-nowrap">
<log-out-form-component></log-out-form-component>
</li>
</ul>
</div>
+89
View File
@@ -0,0 +1,89 @@
<div id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block sidebar" style="background-color: #f6f6f6">
<div class="py-sm-3">
<a href="#">
<img class="" src="https://www.izyim.com/images/logo.png" alt="" height="24">
</a>
</div>
<div class="sidebar-sticky pt-3 pb-4">
<div class="d-flex flex-column justify-content-between" style="height: 100%">
<div>
<div class="py-sm-3">
<span class="fs-14 all-caps">Main Menu</span>
</div>
<ul class="nav flex-column justify-content-between" style="height: 250px">
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-house-door" viewBox="0 0 16 16">
<path
d="M8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4.5a.5.5 0 0 0 .5-.5v-4h2v4a.5.5 0 0 0 .5.5H14a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146zM2.5 14V7.707l5.5-5.5 5.5 5.5V14H10v-4a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v4H2.5z" />
</svg>
Dashboard
</a>
</li>
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-journal-text" viewBox="0 0 16 16">
<path
d="M5 10.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z" />
<path
d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z" />
<path
d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z" />
</svg>
My Addresses
</a>
</li>
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-file-earmark-text" viewBox="0 0 16 16">
<path
d="M5.5 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z" />
<path
d="M9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0zm0 1v2A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z" />
</svg>
My Orders
</a>
</li>
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-box" viewBox="0 0 16 16">
<path
d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5 8 5.961 14.154 3.5 8.186 1.113zM15 4.239l-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z" />
</svg>
My Packages
</a>
</li>
<li class="nav-item">
<a class="text-menu font-weight-normal" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
class="bi bi-truck" viewBox="0 0 16 16">
<path
d="M0 3.5A1.5 1.5 0 0 1 1.5 2h9A1.5 1.5 0 0 1 12 3.5V5h1.02a1.5 1.5 0 0 1 1.17.563l1.481 1.85a1.5 1.5 0 0 1 .329.938V10.5a1.5 1.5 0 0 1-1.5 1.5H14a2 2 0 1 1-4 0H5a2 2 0 1 1-3.998-.085A1.5 1.5 0 0 1 0 10.5v-7zm1.294 7.456A1.999 1.999 0 0 1 4.732 11h5.536a2.01 2.01 0 0 1 .732-.732V3.5a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .294.456zM12 10a2 2 0 0 1 1.732 1h.768a.5.5 0 0 0 .5-.5V8.35a.5.5 0 0 0-.11-.312l-1.48-1.85A.5.5 0 0 0 13.02 6H12v4zm-9 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm9 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2z" />
</svg>
Tracking
</a>
</li>
</ul>
</div>
<div class="container d-flex flex-column justify-content-between py-3 col-sx-12 rounded board">
<div class="inline v-align-middle">
<div class="text-white bold">Got Problems?</div>
<span class="text-white text-small normal">If you have any problems regarding your order, contact us
now.</span>
</div>
<div class="absolute hint-text dotted-grid"
style="width: 83px; height: 74px; margin-top: 80px; margin-left: 85px;"></div>
<div class="row m-t-15">
<div class="col text-center">
<div class="col btn btn-sm p-l-30 p-r-30 btn-white text-primary normal v-align-middle b-rad-1">
Contact Us</div>
</div>
</div>
</div>
</div>
</div>
</div>
+1 -1
View File
@@ -1,6 +1,6 @@
<meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
<meta charset="utf-8"/>
<title>Exchange - Overseas Money Transfers</title>
<title>IZYIM Shipping</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no"/>
<link rel="apple-touch-icon" sizes="180x180" href="images/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon/favicon-32x32.png">
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
//to access ://{{servername}}/template/dashboard
Route::group(['prefix' => 'template'], function () {
Route::get('/dashboard', function () {
return view('pages.templates.dashboard');
})->name('template.dashboard');
});
+2
View File
@@ -13,6 +13,8 @@ use Illuminate\Support\Facades\Route;
|
*/
require __DIR__ . '/template.php';
Route::get('/', function () {
return view('welcome');
});