update pagination

This commit is contained in:
Kenta420-Poom 2023-09-25 15:29:42 +07:00
parent 3f399dda0e
commit 51642983c6
15 changed files with 1049 additions and 240 deletions

View file

@ -16,7 +16,6 @@
"@angular/platform-browser": "^16.2.0",
"@angular/platform-browser-dynamic": "^16.2.0",
"@angular/router": "^16.2.0",
"flowbite": "^1.8.1",
"jwt-decode": "^3.1.2",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
@ -29,6 +28,7 @@
"@types/google.accounts": "^0.0.9",
"@types/jasmine": "~4.3.0",
"autoprefixer": "^10.4.15",
"daisyui": "^3.7.7",
"jasmine-core": "~4.6.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
@ -3122,15 +3122,6 @@
"node": ">=14"
}
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@schematics/angular": {
"version": "16.2.2",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.2.tgz",
@ -4715,6 +4706,12 @@
"color-support": "bin.js"
}
},
"node_modules/colord": {
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
"integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
"dev": true
},
"node_modules/colorette": {
"version": "2.0.20",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
@ -5178,6 +5175,16 @@
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/css-selector-tokenizer": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz",
"integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
"fastparse": "^1.1.2"
}
},
"node_modules/css-what": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
@ -5232,6 +5239,26 @@
"integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==",
"dev": true
},
"node_modules/daisyui": {
"version": "3.7.7",
"resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.7.7.tgz",
"integrity": "sha512-2/nFdW/6R9MMnR8tTm07jPVyPaZwpUSkVsFAADb7Oq8N2Ynbls57laDdNqxTCUmn0QvcZi01TKl8zQbAwRfw1w==",
"dev": true,
"dependencies": {
"colord": "^2.9",
"css-selector-tokenizer": "^0.8",
"postcss": "^8",
"postcss-js": "^4",
"tailwindcss": "^3"
},
"engines": {
"node": ">=16.9.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/daisyui"
}
},
"node_modules/data-urls": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
@ -6091,6 +6118,12 @@
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
"node_modules/fastparse": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
"integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
"dev": true
},
"node_modules/fastq": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
@ -6219,15 +6252,6 @@
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
"dev": true
},
"node_modules/flowbite": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/flowbite/-/flowbite-1.8.1.tgz",
"integrity": "sha512-lXTcO8a6dRTPFpINyOLcATCN/pK1Of/jY4PryklPllAiqH64tSDUsOdQpar3TO59ZXWwugm2e92oaqwH6X90Xg==",
"dependencies": {
"@popperjs/core": "^2.9.3",
"mini-svg-data-uri": "^1.4.3"
}
},
"node_modules/follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
@ -8332,14 +8356,6 @@
"webpack": "^5.0.0"
}
},
"node_modules/mini-svg-data-uri": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
"integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
"bin": {
"mini-svg-data-uri": "cli.js"
}
},
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",

View file

@ -18,7 +18,6 @@
"@angular/platform-browser": "^16.2.0",
"@angular/platform-browser-dynamic": "^16.2.0",
"@angular/router": "^16.2.0",
"flowbite": "^1.8.1",
"jwt-decode": "^3.1.2",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
@ -31,6 +30,7 @@
"@types/google.accounts": "^0.0.9",
"@types/jasmine": "~4.3.0",
"autoprefixer": "^10.4.15",
"daisyui": "^3.7.7",
"jasmine-core": "~4.6.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
@ -41,4 +41,4 @@
"tailwindcss": "^3.3.3",
"typescript": "~5.1.3"
}
}
}

View file

@ -1,7 +1,7 @@
import { NgModule, inject } from '@angular/core';
import { CanActivateFn, Router, RouterModule, Routes } from '@angular/router';
import { UserService } from './core/services/user.service';
import { Subject, finalize, lastValueFrom, map, takeUntil } from 'rxjs';
import { lastValueFrom, map } from 'rxjs';
const authGuard: CanActivateFn = () => {
const userService: UserService = inject(UserService);
@ -74,12 +74,6 @@ const routes: Routes = [
},
],
},
{
path: '**',
pathMatch: 'full',
redirectTo: 'dashboard',
},
];
@NgModule({

View file

@ -1,6 +1,5 @@
import { Component, OnInit } from '@angular/core';
import { Title } from '@angular/platform-browser';
import { initFlowbite } from 'flowbite';
@Component({
selector: 'app-root',
@ -12,6 +11,5 @@ export class AppComponent implements OnInit {
ngOnInit(): void {
this.titleService.setTitle('Recipe Manager | Tao Bin');
initFlowbite();
}
}

View file

@ -9,7 +9,6 @@
type="button"
class="inline-flex items-center p-2 text-sm text-gray-500 rounded-lg sm:hidden hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-200"
>
<span class="sr-only">Open sidebar</span>
<svg
class="w-6 h-6"
aria-hidden="true"
@ -52,63 +51,66 @@
{{ user?.name }}
</span>
</div>
<button
type="button"
class="flex text-sm bg-gray-800 rounded-full focus:ring-4 focus:ring-gray-300 max-sm:hidden"
aria-expanded="false"
data-dropdown-toggle="dropdown-user"
>
<span class="sr-only">Open user menu</span>
<img
class="sm:h-10 md:h-14 rounded-full cursor-pointer"
src="{{ user?.picture }}"
loading="lazy"
alt="profile picture"
/>
</button>
<div class="dropdown dropdown-bottom dropdown-end">
<label
tabindex="0"
class="btn btn-circle w-14 h-14 focus:ring ring-primary ring-offset-base-100 ring-offset-2 max-sm:hidden"
>
<div class="avatar">
<div class="rounded-full">
<img src="{{ user?.picture }}" alt="profile picture" />
</div>
</div>
</label>
<div
tabindex="0"
class="dropdown-content z-[-1] menu p-2 shadow bg-base-100 rounded-box w-52 divide-y divide-gray-100"
>
<div class="px-4 py-3" role="none">
<p class="text-sm text-gray-900" role="none">
{{ user?.name }}
</p>
<p
class="text-sm font-medium text-gray-900 truncate"
role="none"
>
{{ user?.email }}
</p>
</div>
<ul class="py-1" role="none">
<li>
<a
routerLink="/dashboard"
class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100"
role="menuitem"
>
Dashboard</a
>
</li>
<li>
<a
class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100"
role="menuitem"
>Settings</a
>
</li>
<li>
<a
class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100"
role="menuitem"
(click)="logout()"
>Sign out</a
>
</li>
</ul>
</div>
</div>
</div>
<div
class="z-50 hidden my-4 text-base list-none bg-primary divide-y divide-gray-100 rounded shadow"
id="dropdown-user"
>
<div class="px-4 py-3" role="none">
<p class="text-sm text-gray-900" role="none">
{{ user?.name }}
</p>
<p class="text-sm font-medium text-gray-900 truncate" role="none">
{{ user?.email }}
</p>
</div>
<ul class="py-1" role="none">
<li>
<a
routerLink="/dashboard"
class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100"
role="menuitem"
>
Dashboard</a
>
</li>
<li>
<a
href="#"
class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100"
role="menuitem"
>Settings</a
>
</li>
<li>
<a
routerLink="#"
class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100"
role="menuitem"
(click)="logout()"
>Sign out</a
>
</li>
</ul>
</div>
></div>
</div>
</div>
</div>

View file

@ -4,7 +4,6 @@ import { DatePipe, NgFor, NgIf } from '@angular/common';
import { GoogleButtonComponent } from 'src/app/shared/googleButton/googleButton.component';
import { UserService } from '../services/user.service';
import { User } from '../models/user.model';
import { initFlowbite } from 'flowbite';
import { Subject, takeUntil } from 'rxjs';
interface MenuItem {
@ -40,8 +39,6 @@ export class LayoutComponent implements OnInit {
constructor(private _userService: UserService) {}
ngOnInit(): void {
initFlowbite();
this._userService.currentUser
.pipe(takeUntil(this.exit$))
.subscribe((user) => (this.user = user));

View file

@ -4,12 +4,27 @@ import { BehaviorSubject, Observable, distinctUntilChanged } from 'rxjs';
import { Recipe } from '../models/recipe.model';
import { environment } from 'src/environments/environment';
interface Pagination {
offset: number;
take: number;
}
@Injectable({ providedIn: 'root' })
export class RecipeService {
constructor(private _httpClient: HttpClient) {}
getRecipes(): Observable<Recipe> {
return this._httpClient.get<Recipe>(environment.api + '/recipes', {
getRecipes(paginate: Pagination = { take: 10, offset: 0 }): Observable<{
recipes: Recipe;
hasMore: boolean;
}> {
return this._httpClient.get<{
recipes: Recipe;
hasMore: boolean;
}>(environment.api + '/recipes', {
params: {
offset: String(paginate.offset),
take: String(paginate.take),
},
withCredentials: true,
});
}

View file

@ -1,49 +1,72 @@
<main class="relative overflow-auto max-h-[700px] shadow-md sm:rounded-lg">
<table
*ngIf="isLoaded; else loadingIndicator"
class="w-full table-auto text-sm text-left text-gray-500"
>
<caption
class="p-5 text-lg font-semibold text-left text-gray-900 bg-primary"
>
<div class="flex flex-row">
<div class="flex flex-col">
<span
>Recipe Version {{ recipes?.MachineSetting?.configNumber }} |
{{"{{File name}}"}}</span
>
<main
class="relative overflow-auto max-h-[700px] shadow-md sm:rounded-lg"
#table
>
<table *ngIf="isLoaded" class="table">
<caption class="p-5 text-lg font-semibold text-left text-gray-900">
<div class="divide-y divide-solid divide-gray-400">
<div class="flex flex-row py-3">
<div class="flex flex-col">
<span
>Recipe Version {{ recipes?.MachineSetting?.configNumber }} |
{{"{{File name}}"}}</span
>
</div>
<div class="flex flex-col ml-auto">
<span class=""
>Last Updated:
{{ recipes?.Timestamp | date : "dd-MMM-yyyy hh:mm:ss" }}</span
>
</div>
</div>
<div class="flex flex-col ml-auto">
<span class=""
>Last Updated:
{{ recipes?.Timestamp | date : "dd-MMM-yyyy hh:mm:ss" }}</span
>
<div class="flex flex-col">
<div class="relativ sm:rounded-lg">
<div
class="flex flex-col items-center justify-between p-4 space-y-3 md:flex-row md:space-y-0 md:space-x-4"
>
<div class="join">
<input
class="input input-bordered join-item w-[300px]"
placeholder="Product Code, Name or Other Name"
/>
<button class="btn join-item">Search</button>
</div>
<div class="flex gap-2">
<button class="btn rounded-lg">View JSON</button>
<button class="btn rounded-lg">
<svg
class="w-6 h-6 text-gray-800 dark:text-white"
aria-hidden="true"
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 18 20"
>
<path
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1"
d="M15 6V2a.97.97 0 0 0-.933-1H5.828a2 2 0 0 0-1.414.586L1.586 4.414A2 2 0 0 0 1 5.828V18a.969.969 0 0 0 .933 1H14a1 1 0 0 0 1-1M6 1v4a1 1 0 0 1-1 1H1m6 6h9m-1.939-2.768L16.828 12l-2.767 2.768"
/>
</svg>
Export
</button>
</div>
</div>
</div>
</div>
</div>
</caption>
<thead class="text-xs sticky top-0 text-gray-700 uppercase bg-secondary">
<tr>
<th scope="col" class="px-6 py-3" *ngFor="let head of tableHeads">
<th>
<label>
<input type="checkbox" class="checkbox" />
</label>
</th>
<th scope="col" class="px-6 py-3" *ngFor="let header of tableHeads">
<div class="flex items-center uppercase">
{{ head }}
<a href="#"
><svg
class="w-3 h-3 ml-1.5"
aria-hidden="true"
xmlns="http://www.w3.org/2000/svg"
fill="currentColor"
viewBox="0 0 24 24"
>
<path
d="M8.574 11.024h6.852a2.075 2.075 0 0 0 1.847-1.086 1.9 1.9 0 0 0-.11-1.986L13.736 2.9a2.122 2.122 0 0 0-3.472 0L6.837 7.952a1.9 1.9 0 0 0-.11 1.986 2.074 2.074 0 0 0 1.847 1.086Zm6.852 1.952H8.574a2.072 2.072 0 0 0-1.847 1.087 1.9 1.9 0 0 0 .11 1.985l3.426 5.05a2.123 2.123 0 0 0 3.472 0l3.427-5.05a1.9 1.9 0 0 0 .11-1.985 2.074 2.074 0 0 0-1.846-1.087Z"
/>
</svg>
</a>
</div>
</th>
<th scope="col" class="flex items-center py-3">
<div class="flex items-center text-center uppercase">
Actions
{{ header }}
<a href="#"
><svg
class="w-3 h-3 ml-1.5"
@ -59,52 +82,65 @@
</a>
</div>
</th>
<th scope="col" class="px-6 py-3"></th>
</tr>
</thead>
<tbody>
<tr
*ngFor="let recipe of recipes!.Recipe01"
*ngFor="let recipe of recipes01"
class="bg-white la border-b hover:bg-secondary"
>
<th
<th>
<label>
<input type="checkbox" class="checkbox" />
</label>
</th>
<td
scope="row"
class="px-6 py-4 font-medium text-gray-900 whitespace-nowrap"
>
{{ recipe.productCode }}
</td>
<td
class="px-6 max-w-fit py-4 font-medium text-gray-900 whitespace-nowrap"
>
{{ recipe.name }}
</th>
</td>
<td class="px-6 py-4">{{ recipe.otherName }}</td>
<td class="px-6 py-4 flex-wrap max-w-xs">{{ recipe.Description }}</td>
<td class="px-6 py-4">
{{ recipe.LastChange | date : "dd-MMM-yyyy hh:mm:ss" }}
</td>
<td class="px-6 py-4 flex gap-2">
<a
href="#"
class="font-medium text-blue-600 dark:text-blue-500 hover:underline"
>Edit</a
>
<a
href="#"
class="font-medium text-blue-600 dark:text-blue-500 hover:underline"
>Edit</a
>
<a
href="#"
class="font-medium text-blue-600 dark:text-blue-500 hover:underline"
>Edit</a
>
<td class="px-4 py-4 flex">
<div class="cursor-pointer">
<svg
class="w-6 h-6 text-gray-800 dark:text-white"
aria-hidden="true"
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 20 20"
>
<path
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1"
d="M7.75 4H19M7.75 4a2.25 2.25 0 0 1-4.5 0m4.5 0a2.25 2.25 0 0 0-4.5 0M1 4h2.25m13.5 6H19m-2.25 0a2.25 2.25 0 0 1-4.5 0m4.5 0a2.25 2.25 0 0 0-4.5 0M1 10h11.25m-4.5 6H19M7.75 16a2.25 2.25 0 0 1-4.5 0m4.5 0a2.25 2.25 0 0 0-4.5 0M1 16h2.25"
/>
</svg>
</div>
</td>
</tr>
</tbody>
</table>
<ng-template #loadingIndicator>
<div *ngIf="!isLoaded">
<div
class="flex w-full items-center justify-center h-56 border border-gray-200 rounded-lg bg-gray-50"
>
<div role="status">
<svg
aria-hidden="true"
class="w-8 h-8 mr-2 text-gray-200 animate-spin fill-blue-600"
class="w-8 h-8 mr-2 text-gray-200 animate-spin fill-amber-600"
viewBox="0 0 100 101"
fill="none"
xmlns="http://www.w3.org/2000/svg"
@ -120,67 +156,5 @@
</svg>
</div>
</div>
</ng-template>
</div>
</main>
<nav
class="flex items-center justify-between pt-4"
aria-label="Table navigation"
>
<span class="text-sm font-normal text-gray-500 dark:text-gray-400"
>Showing
<span class="font-semibold text-gray-900 dark:text-white">1-10</span> of
<span class="font-semibold text-gray-900 dark:text-white">1000</span></span
>
<ul class="inline-flex -space-x-px text-sm h-8">
<li>
<a
href="#"
class="flex items-center justify-center px-3 h-8 ml-0 leading-tight text-gray-500 bg-white border border-gray-300 rounded-l-lg hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"
>Previous</a
>
</li>
<li>
<a
href="#"
class="flex items-center justify-center px-3 h-8 leading-tight text-gray-500 bg-white border border-gray-300 hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"
>1</a
>
</li>
<li>
<a
href="#"
class="flex items-center justify-center px-3 h-8 leading-tight text-gray-500 bg-white border border-gray-300 hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"
>2</a
>
</li>
<li>
<a
href="#"
aria-current="page"
class="flex items-center justify-center px-3 h-8 text-blue-600 border border-gray-300 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white"
>3</a
>
</li>
<li>
<a
href="#"
class="flex items-center justify-center px-3 h-8 leading-tight text-gray-500 bg-white border border-gray-300 hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"
>4</a
>
</li>
<li>
<a
href="#"
class="flex items-center justify-center px-3 h-8 leading-tight text-gray-500 bg-white border border-gray-300 hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"
>5</a
>
</li>
<li>
<a
href="#"
class="flex items-center justify-center px-3 h-8 leading-tight text-gray-500 bg-white border border-gray-300 rounded-r-lg hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white"
>Next</a
>
</li>
</ul>
</nav>

View file

@ -1,13 +1,19 @@
import { Component, OnInit } from '@angular/core';
import {
AfterContentChecked,
AfterRenderRef,
AfterViewChecked,
AfterViewInit,
Component,
ElementRef,
OnInit,
ViewChild,
} from '@angular/core';
import { UserService } from 'src/app/core/services/user.service';
import { HttpClient } from '@angular/common/http';
import { User } from 'src/app/core/models/user.model';
import { DatePipe, NgFor, NgIf } from '@angular/common';
import { initFlowbite } from 'flowbite';
import { environment } from 'src/environments/environment';
import { delay } from 'rxjs';
import { Recipe } from 'src/app/core/models/recipe.model';
import { Recipe, Recipe01 } from 'src/app/core/models/recipe.model';
import { RecipeService } from 'src/app/core/services/recipe.service';
import { BehaviorSubject } from 'rxjs';
@Component({
selector: 'app-dashboard',
@ -18,8 +24,59 @@ import { RecipeService } from 'src/app/core/services/recipe.service';
export class DashboardComponent implements OnInit {
userInfo: User | null = null;
recipes: Recipe | null = null;
tableHeads: string[] = ['Name', 'Other Name', 'Description', 'Last Updated'];
recipes01: Recipe01[] | null = null;
tableHeads: string[] = [
'Product Code',
'Name',
'Other Name',
'Description',
'Last Updated',
];
private offset = 0;
private take = 10;
isLoaded: boolean = false;
isLoadMore: boolean = false;
isHasMore: boolean = true;
@ViewChild('table', { static: false }) set content(table: ElementRef) {
table.nativeElement.addEventListener(
'scroll',
() => {
if (this.isHasMore === false) {
return;
}
const { scrollTop, scrollHeight, clientHeight } = table.nativeElement;
const isBottom = scrollTop + clientHeight >= scrollHeight - 10;
if (isBottom && !this.isLoadMore) {
this.isLoadMore = true;
this._recipeService
.getRecipes({
offset: this.offset,
take: this.take,
})
.subscribe(({ recipes, hasMore }) => {
const { Recipe01, ...recipesWithoutRecipe01 } = recipes;
if (this.recipes01 && this.isHasMore) {
this.recipes01 = [...this.recipes01, ...Recipe01];
} else {
this.recipes01 = Recipe01;
}
this.recipes = {
...recipesWithoutRecipe01,
Recipe01: [],
};
this.offset += 10;
this.isLoadMore = false;
this.isHasMore = hasMore;
});
}
},
{ passive: true }
);
}
constructor(
private _userService: UserService,
@ -27,16 +84,29 @@ export class DashboardComponent implements OnInit {
) {}
ngOnInit(): void {
initFlowbite();
this._userService.currentUser.subscribe((user) => {
this.userInfo = user;
});
this._recipeService.getRecipes().subscribe((recipes) => {
this.recipes = recipes;
this.isLoaded = true;
console.log(this.recipes);
});
this._recipeService
.getRecipes({
offset: this.offset,
take: this.take,
})
.subscribe(({ recipes, hasMore }) => {
const { Recipe01, ...recipesWithoutRecipe01 } = recipes;
if (this.recipes01 && this.isHasMore) {
this.recipes01 = [...this.recipes01, ...Recipe01];
} else {
this.recipes01 = Recipe01;
}
this.recipes = {
...recipesWithoutRecipe01,
Recipe01: [],
};
this.offset += 10;
this.isLoaded = true;
this.isHasMore = hasMore;
});
}
}

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M240-40q-33 0-56.5-23.5T160-120v-440q0-33 23.5-56.5T240-640h120v80H240v440h480v-440H600v-80h120q33 0 56.5 23.5T800-560v440q0 33-23.5 56.5T720-40H240Zm200-280v-447l-64 64-56-57 160-160 160 160-56 57-64-64v447h-80Z"/></svg>

After

Width:  |  Height:  |  Size: 318 B

View file

@ -1,14 +1,15 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
darkMode: "class",
content: [
"./src/**/*.{html,ts}",
"./node_modules/flowbite/**/*.js" // add this line
],
theme: {
extend: {
"backgroundColor": {
"primary": "#EAE6E1",
"secondary": "#F5F5F5",
"third": "#F2994A",
},
"textColor": {
"primary": "#513C2F",
@ -18,6 +19,9 @@ module.exports = {
}
},
},
plugins: [require("flowbite/plugin")],
daisyui: {
themes: ["cupcake"]
},
plugins: [require('daisyui')],
}

View file

@ -39,8 +39,8 @@ func NewData() *Data {
}
}
func (d *Data) GetRecipe() *models.Recipe {
return d.recipe
func (d *Data) GetRecipe() models.Recipe {
return *d.recipe
}
func (d *Data) GetRecipe01() []models.Recipe01 {

View file

@ -90,7 +90,7 @@ func (ar *AuthRouter) Route(r chi.Router) {
// redirect to frontend with token and refresh token
w.Header().Add("set-cookie", "access_token="+token.AccessToken+"; Path=/; HttpOnly; SameSite=None; Secure; Max-Age=3600")
w.Header().Add("set-cookie", "refresh_token="+token.RefreshToken+"; Path=/; HttpOnly; SameSite=None; Secure")
http.Redirect(w, r, ar.cfg.ClientRedirectURL+"/callback?"+value.Encode(), http.StatusTemporaryRedirect)
http.Redirect(w, r, ar.cfg.ClientRedirectURL+"/?"+value.Encode(), http.StatusTemporaryRedirect)
})
r.Get("/refresh", func(w http.ResponseWriter, r *http.Request) {
@ -110,7 +110,7 @@ func (ar *AuthRouter) Route(r chi.Router) {
}
// redirect to frontend with token and refresh token
http.Redirect(w, r, ar.cfg.ClientRedirectURL+"/callback?token="+token.AccessToken+"&redirect_to="+redirectTo, http.StatusTemporaryRedirect)
http.Redirect(w, r, ar.cfg.ClientRedirectURL+"/?token="+token.AccessToken+"&redirect_to="+redirectTo, http.StatusTemporaryRedirect)
})
r.Get("/revoke", func(w http.ResponseWriter, r *http.Request) {

View file

@ -2,8 +2,12 @@ package routers
import (
"encoding/json"
"log"
"net/http"
"recipe-manager/data"
"recipe-manager/models"
"sort"
"strconv"
"github.com/go-chi/chi/v5"
)
@ -22,7 +26,34 @@ func (rr *RecipeRouter) Route(r chi.Router) {
r.Route("/recipes", func(r chi.Router) {
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Content-Type", "application/json")
json.NewEncoder(w).Encode(rr.data.GetRecipe())
var take, offset uint64 = 10, 0
if newOffset, err := strconv.ParseUint(r.URL.Query().Get("offset"), 10, 64); err == nil {
offset = newOffset
}
if newTake, err := strconv.ParseUint(r.URL.Query().Get("take"), 10, 64); err == nil {
take = newTake
}
// copy the strcut to avoid modifying the original
recipe := rr.data.GetRecipe()
isHasMore := len(recipe.Recipe01) >= int(take+offset)
if isHasMore {
recipe.Recipe01 = recipe.Recipe01[offset : take+offset]
sort.Slice(recipe.Recipe01, func(i, j int) bool {
return recipe.Recipe01[i].ID < recipe.Recipe01[j].ID
})
} else if len(recipe.Recipe01) > int(offset) {
log.Println("offset", offset, "len", len(recipe.Recipe01))
recipe.Recipe01 = recipe.Recipe01[offset:]
} else {
recipe.Recipe01 = []models.Recipe01{}
}
json.NewEncoder(w).Encode(map[string]interface{}{
"recipes": recipe,
"hasMore": isHasMore,
})
})
})
}

View file

@ -0,0 +1,707 @@
{"level":"info","timestamp":"2023-09-25T09:14:24.120+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T09:14:28.641+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:14:53.457+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T09:14:53.457+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/changelog","error":"open cofffeemachineConfig/changelog: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T09:14:53.498+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T09:14:53.498+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/merge","error":"open cofffeemachineConfig/merge: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T09:23:21.875+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:23:27.572+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:23:54.587+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:24:37.262+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:25:05.783+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:25:44.074+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:28:27.723+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:28:55.125+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:29:28.981+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:31:07.774+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:31:14.896+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:31:20.527+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:31:24.310+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:31:38.595+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:32:13.369+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:32:15.015+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:32:38.043+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:33:00.584+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:33:07.470+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:33:11.711+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:33:32.797+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:33:44.657+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:33:52.222+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:34:01.717+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:35:34.575+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:36:25.694+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:36:35.981+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:37:30.427+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:38:35.145+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:38:55.751+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:39:31.448+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:40:52.645+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:40:57.960+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:41:41.504+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:46:35.210+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:47:05.901+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:47:11.408+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:47:24.603+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:48:16.633+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:48:25.842+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:48:29.733+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:48:43.589+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:48:50.850+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:49:16.647+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:51:58.996+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:52:59.893+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:53:16.255+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:53:32.632+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:53:38.776+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:53:46.494+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:54:17.784+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:54:23.624+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:55:09.404+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:55:15.542+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:55:20.653+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:55:28.560+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:55:46.474+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:55:52.988+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:56:00.307+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:56:11.493+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:56:21.250+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:56:24.458+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:56:30.569+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:56:40.073+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:57:08.551+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:57:16.821+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:57:23.481+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:57:36.777+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:59:36.176+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T09:59:54.636+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:00:03.459+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:00:10.039+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:00:14.559+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:00:41.650+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:01:22.545+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:03:01.197+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:03:08.519+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:03:20.250+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:03:36.152+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:03:48.789+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:03:59.695+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:04:10.377+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:04:14.623+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:04:18.298+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:04:21.819+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:04:32.566+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:05:02.197+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:05:25.487+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:06:52.903+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:07:02.100+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:07:09.963+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:07:16.034+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:08:12.237+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:08:18.930+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:08:49.267+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:09:07.186+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:09:22.555+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:09:50.630+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:10:03.087+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:10:34.093+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:11:10.766+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:11:16.707+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:11:25.740+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:12:16.573+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:12:27.028+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:12:36.686+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:13:17.766+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T10:13:17.766+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/changelog","error":"open cofffeemachineConfig/changelog: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T10:13:17.816+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T10:13:17.816+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/merge","error":"open cofffeemachineConfig/merge: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T10:13:18.805+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:14:10.175+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:15:28.490+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:16:03.904+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:16:55.426+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:17:35.746+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:17:43.798+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:17:49.540+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:18:05.216+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:18:08.608+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:18:26.385+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:18:28.897+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:18:33.199+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:19:01.052+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:19:29.467+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:19:58.010+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:20:34.823+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:20:40.061+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:21:11.810+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:21:29.342+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:21:34.885+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:21:50.171+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:21:58.199+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:22:25.199+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:22:33.948+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:23:00.773+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:23:08.306+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:23:12.479+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:23:30.389+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:23:32.228+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:23:47.376+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:23:57.658+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:24:17.908+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:24:23.127+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:24:42.092+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:25:16.610+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:25:26.324+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:25:56.724+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T10:25:56.724+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/changelog","error":"open cofffeemachineConfig/changelog: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T10:25:56.776+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T10:25:56.776+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/merge","error":"open cofffeemachineConfig/merge: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T10:25:57.407+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T10:26:41.768+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T11:10:12.037+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T11:10:12.037+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/merge","error":"open cofffeemachineConfig/merge: no such file or directory"}
{"level":"error","timestamp":"2023-09-25T11:10:12.084+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T11:10:12.084+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/changelog","error":"open cofffeemachineConfig/changelog: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T11:10:43.487+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T11:10:48.794+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T11:10:48.794+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/changelog","error":"open cofffeemachineConfig/changelog: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T11:10:48.835+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T11:10:48.835+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/merge","error":"open cofffeemachineConfig/merge: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T11:13:54.626+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T13:39:41.378+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"info","timestamp":"2023-09-25T13:40:26.788+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:40:43.685+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:41:54.234+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:42:23.172+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:42:49.746+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:44:07.108+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:44:16.034+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:50:17.688+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T13:50:26.502+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:50:36.034+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:56:23.992+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:56:41.013+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:56:52.584+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:57:18.633+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:58:01.058+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:58:30.676+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:59:29.946+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T13:59:51.359+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:00:08.271+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:07:58.152+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:09:04.009+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:09:12.770+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:09:41.664+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:12:40.016+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:12:49.064+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:13:54.066+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:14:09.794+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:14:29.822+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:14:50.283+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:16:53.351+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:17:16.486+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:17:26.895+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:17:32.118+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:17:34.714+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:17:36.838+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:17:58.042+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:18:13.968+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:19:13.543+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:19:39.803+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:19:58.489+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:20:13.988+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:21:37.876+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:21:48.827+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:23:47.544+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:24:39.340+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:24:51.884+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:25:12.359+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:25:16.868+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:27:15.451+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:27:57.122+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:30:24.531+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:30:44.232+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:30:57.702+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:04.608+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:25.249+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:48.808+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:51.183+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:51.304+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:51.422+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:51.538+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:51.690+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:51.813+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:51.933+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:52.090+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:52.209+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:52.334+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:52.453+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:52.573+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:52.696+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:52.811+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:52.923+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:53.057+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:53.173+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:53.285+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:53.447+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:53.566+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:53.680+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:53.792+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:53.938+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:33:54.058+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:06.020+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:08.933+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:09.075+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:09.190+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:09.351+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:09.479+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:09.599+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:09.760+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:09.872+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:09.989+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:10.103+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:10.234+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:10.352+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:10.462+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:10.579+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:10.694+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:10.811+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:10.919+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:11.027+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:11.143+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:11.255+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:11.371+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:11.485+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:11.603+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:11.721+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:11.840+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:11.954+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:12.073+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:12.190+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:12.314+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:12.433+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:12.556+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:12.667+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:12.785+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:12.904+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:13.017+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:13.127+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:13.246+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:13.364+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:13.480+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:13.592+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:13.706+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:13.815+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:13.942+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:14.062+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:14.198+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:14.347+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:14.463+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:14.582+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:14.700+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:14.860+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:14.980+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:15.093+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:15.204+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:15.321+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:15.435+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:15.548+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:15.671+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:15.839+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:15.959+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:16.092+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:16.228+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:16.344+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:16.456+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:16.574+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:16.718+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:16.830+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:16.944+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:17.070+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:17.180+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:17.293+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:17.410+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:17.525+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:17.670+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:17.794+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:17.908+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:18.024+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:18.143+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:18.253+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:18.375+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:18.491+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:18.615+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:18.770+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:18.902+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:19.015+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:19.130+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:19.253+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:19.377+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:19.499+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:19.647+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:19.786+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:19.901+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:20.017+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:20.131+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:20.252+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:20.370+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:20.508+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:20.617+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:20.729+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:20.858+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:20.977+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:21.094+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:21.213+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:21.325+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:21.443+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:21.566+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:21.680+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:21.812+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:21.981+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:22.106+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:22.219+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:22.338+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:22.486+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:22.605+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:22.743+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:22.866+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:34:22.981+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T14:43:22.734+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:43:22.847+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:44:52.553+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:44:52.686+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:45:15.966+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:45:16.078+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:45:52.336+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:45:52.456+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:46:09.036+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:46:09.153+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:46:27.942+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"error","timestamp":"2023-09-25T14:46:28.063+0700","message":"User is not authenticated or timed out","requester":null}
{"level":"info","timestamp":"2023-09-25T14:47:43.349+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T14:47:48.415+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.110+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.174+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.244+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.315+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.383+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.457+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.515+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.577+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.643+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.713+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.795+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.855+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.915+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:52.986+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.051+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.113+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.169+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.243+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.320+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.381+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.448+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.525+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.587+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.651+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.712+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.775+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.847+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.903+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:53.964+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.025+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.089+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.152+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.225+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.289+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.438+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.501+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.562+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.621+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.705+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.763+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.825+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.883+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:54.947+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.018+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.078+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.145+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.215+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.288+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.353+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.415+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.512+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.575+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.642+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.707+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.768+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.843+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.906+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:55.965+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:56.030+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:47:56.105+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:48:57.877+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T14:49:00.965+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:49:50.906+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:50:46.308+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:52:52.657+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:53:20.261+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:53:51.518+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:53:54.171+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:54:01.299+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:54:03.707+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:55:07.129+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T14:55:12.801+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:55:22.306+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:55:44.185+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:55:45.936+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:55:47.098+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:55:52.606+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:55:53.861+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:56:34.170+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:57:15.069+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:57:20.426+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:57:26.451+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:57:34.506+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:57:35.903+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:57:40.382+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T14:57:42.074+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:00:15.464+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T15:00:20.127+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:00:27.250+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:00:30.872+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:00:38.056+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:00:40.778+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:00:44.574+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:00:47.615+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:06:13.778+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:06:25.081+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T15:06:28.409+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:07:07.529+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T15:07:10.922+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:07:44.136+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:08:32.549+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T15:08:46.940+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T15:08:50.630+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:09:00.038+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:09:00.151+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:09:12.226+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:09:30.462+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:09:59.571+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:28.091+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T15:13:33.358+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:35.220+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:40.534+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:43.737+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:47.803+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:50.975+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:54.758+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:56.169+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:57.524+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:58.674+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:13:59.816+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:00.700+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:01.638+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:02.479+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:05.712+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:06.647+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:07.475+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:08.436+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:09.130+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:10.739+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:11.796+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:13.342+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:14.568+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:15.388+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:16.145+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:17.002+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:17.740+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:18.443+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:19.248+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:20.070+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:20.823+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:21.472+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:22.147+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:22.917+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:26.662+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:32.272+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:33.231+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:33.993+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:36.955+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:43.869+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:44.695+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:45.382+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:46.155+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:46.941+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:47.686+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:48.379+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:49.066+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:49.726+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:50.537+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:14:50.678+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:37.832+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:47.359+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:49.000+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:50.015+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:50.751+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:51.483+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:52.263+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:52.952+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:53.677+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:16:56.248+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:03.122+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:03.767+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:05.747+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:06.410+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:07.209+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:07.975+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:08.876+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:09.706+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:11.792+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:12.457+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:13.171+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:14.106+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:14.266+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:15.094+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:15.250+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:17.192+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:18.181+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:19.064+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:19.798+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:19.943+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:20.705+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:20.860+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:22.046+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:23.327+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:23.472+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:24.479+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:24.617+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:24.991+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:25.842+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:25.993+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:26.220+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:27.506+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:27.651+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:29.034+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:29.174+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:29.339+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:29.496+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:29.798+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:30.468+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:32.280+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:17:32.412+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:18:51.677+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:05.065+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:09.371+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:13.132+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:14.238+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:17.316+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:19.755+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:20.322+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:22.673+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:24.282+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:25.286+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:26.045+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:26.886+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:27.687+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:28.596+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:29.453+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:30.173+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:30.905+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:32.029+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:32.805+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:33.452+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:34.187+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:35.181+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:35.943+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:36.073+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:36.916+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:37.052+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:37.620+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:37.944+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:38.283+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:39.332+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:39.484+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:40.246+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:40.761+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:41.660+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:42.475+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:43.261+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:43.616+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:44.131+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:44.668+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:46.103+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:46.434+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:46.916+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:47.201+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:47.554+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:47.772+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:47.963+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:49.185+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:49.374+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:49.797+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:19:50.009+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:22.476+0700","message":"Server running","addr":":8080"}
{"level":"info","timestamp":"2023-09-25T15:21:28.345+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:30.063+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:30.767+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:31.937+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:32.479+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:33.209+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:33.974+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:34.551+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:35.137+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:35.704+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:36.476+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:37.136+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:37.844+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:38.583+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:39.318+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:41.611+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:42.105+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:42.306+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:43.679+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:44.518+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:45.284+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:46.570+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:47.457+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:48.113+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:48.726+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:50.545+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:51.158+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:51.555+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:52.072+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:52.513+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:54.302+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:54.608+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:55.102+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:55.763+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:56.217+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:56.572+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:58.784+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:21:59.666+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:00.623+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:01.380+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:02.264+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:02.746+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:03.133+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:05.386+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:05.808+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:07.097+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:07.927+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:08.909+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:22:09.614+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:17.645+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:21.519+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:23.713+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:24.875+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:26.196+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:27.153+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:31.075+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:31.840+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:32.773+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:28:54.130+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T15:28:54.130+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/merge","error":"open cofffeemachineConfig/merge: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T15:28:54.177+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"error","timestamp":"2023-09-25T15:28:54.177+0700","message":"Error while trying to read dir: ","dir":"cofffeemachineConfig/changelog","error":"open cofffeemachineConfig/changelog: no such file or directory"}
{"level":"info","timestamp":"2023-09-25T15:28:54.878+0700","message":"User is authenticated","user":"poomipat chuealue"}
{"level":"info","timestamp":"2023-09-25T15:29:01.403+0700","message":"User is authenticated","user":"poomipat chuealue"}