Skip to content

Commit

Permalink
Merge pull request #1404 from SciCatProject/Separate-Search-UI-Logic-…
Browse files Browse the repository at this point in the history
…from-Frontend

refactor: separate search ui logic from frontend
  • Loading branch information
nitrosx authored Sep 18, 2024
2 parents 38780fd + e97ec50 commit 09d2c75
Show file tree
Hide file tree
Showing 14 changed files with 362 additions and 322 deletions.
28 changes: 28 additions & 0 deletions src/auth/auth.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { flattenObject, parseBoolean } from "src/common/utils";
import { Issuer } from "openid-client";
import { ReturnedAuthLoginDto } from "./dto/returnedLogin.dto";
import { ReturnedUserDto } from "src/users/dto/returned-user.dto";
import { CreateUserSettingsDto } from "src/users/dto/create-user-settings.dto";

@Injectable()
export class AuthService {
Expand Down Expand Up @@ -43,6 +44,7 @@ export class AuthService {
async login(user: Omit<User, "password">): Promise<ReturnedAuthLoginDto> {
const expiresIn = this.configService.get<number>("jwt.expiresIn");
const accessToken = this.jwtService.sign(user, { expiresIn });
await this.postLoginTasks(user);
return {
access_token: accessToken,
id: accessToken,
Expand Down Expand Up @@ -122,4 +124,30 @@ export class AuthService {

return { logout: "successful" };
}
/**
* postLoginTasks: Executes additional tasks after user login.
*
* - Checks if the user has userSettings record.
* - If user has no userSetting, it creates default userSetting for the user.
* @param user - The logged-in user (without password).
*/
async postLoginTasks(user: Omit<User, "password">) {
if (!user) return;

const userId = user._id;

const userSettings = await this.usersService.findByIdUserSettings(userId);

if (!userSettings) {
Logger.log(
`Adding default settings to user ${user.username} with userId: ${user._id}`,
"postLoginTasks",
);
const createUserSettingsDto: CreateUserSettingsDto = {
userId,
externalSettings: {},
};
await this.usersService.createUserSettings(userId, createUserSettingsDto);
}
}
}
11 changes: 0 additions & 11 deletions src/config/default-filters.config.json

This file was deleted.

187 changes: 105 additions & 82 deletions src/config/frontend.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,87 +26,7 @@
"jsonMetadataEnabled": true,
"jupyterHubUrl": "",
"landingPage": "doi.ess.eu/detail/",
"lbBaseURL": "http://127.0.0.1:3000",
"localColumns": [
{
"name": "select",
"order": 0,
"type": "standard",
"enabled": true
},
{
"name": "pid",
"order": 1,
"type": "standard",
"enabled": true
},
{
"name": "datasetName",
"order": 2,
"type": "standard",
"enabled": true
},
{
"name": "runNumber",
"order": 3,
"type": "standard",
"enabled": true
},
{
"name": "sourceFolder",
"order": 4,
"type": "standard",
"enabled": true
},
{
"name": "size",
"order": 5,
"type": "standard",
"enabled": true
},
{
"name": "creationTime",
"order": 6,
"type": "standard",
"enabled": true
},
{
"name": "type",
"order": 7,
"type": "standard",
"enabled": true
},
{
"name": "image",
"order": 8,
"type": "standard",
"enabled": true
},
{
"name": "metadata",
"order": 9,
"type": "standard",
"enabled": false
},
{
"name": "proposalId",
"order": 10,
"type": "standard",
"enabled": true
},
{
"name": "ownerGroup",
"order": 11,
"type": "standard",
"enabled": false
},
{
"name": "dataStatus",
"order": 12,
"type": "standard",
"enabled": false
}
],
"lbBaseURL": "http://localhost:3000",
"logbookEnabled": true,
"loginFormEnabled": true,
"maxDirectDownloadSize": 5000000000,
Expand Down Expand Up @@ -180,5 +100,108 @@
"enabled": "#Selected",
"authorization": ["#datasetAccess", "#datasetPublic"]
}
]
],
"labelMaps": {
"filters": {
"LocationFilter": "Location",
"PidFilter": "Pid",
"GroupFilter": "Group",
"TypeFilter": "Type",
"KeywordFilter": "Keyword",
"DateRangeFilter": "Start Date - End Date",
"TextFilter": "Text"
}
},
"defaultDatasetsListSettings": {
"columns": [
{
"name": "select",
"order": 0,
"type": "standard",
"enabled": true
},
{
"name": "pid",
"order": 1,
"type": "standard",
"enabled": true
},
{
"name": "datasetName",
"order": 2,
"type": "standard",
"enabled": true
},
{
"name": "runNumber",
"order": 3,
"type": "standard",
"enabled": true
},
{
"name": "sourceFolder",
"order": 4,
"type": "standard",
"enabled": true
},
{
"name": "size",
"order": 5,
"type": "standard",
"enabled": true
},
{
"name": "creationTime",
"order": 6,
"type": "standard",
"enabled": true
},
{
"name": "type",
"order": 7,
"type": "standard",
"enabled": true
},
{
"name": "image",
"order": 8,
"type": "standard",
"enabled": true
},
{
"name": "metadata",
"order": 9,
"type": "standard",
"enabled": false
},
{
"name": "proposalId",
"order": 10,
"type": "standard",
"enabled": true
},
{
"name": "ownerGroup",
"order": 11,
"type": "standard",
"enabled": false
},
{
"name": "dataStatus",
"order": 12,
"type": "standard",
"enabled": false
}
],
"filters": [
{ "LocationFilter": true },
{ "PidFilter": true },
{ "GroupFilter": true },
{ "TypeFilter": true },
{ "KeywordFilter": true },
{ "DateRangeFilter": true },
{ "TextFilter": true }
],
"conditions": []
}
}
25 changes: 9 additions & 16 deletions src/users/dto/update-user-settings.dto.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
import { ApiProperty, PartialType } from "@nestjs/swagger";
import {
FilterConfig,
ScientificCondition,
} from "../schemas/user-settings.schema";
import { IsArray, IsNumber } from "class-validator";
import { IsNumber, IsObject, IsOptional } from "class-validator";

export class UpdateUserSettingsDto {
@ApiProperty()
@IsArray()
readonly columns: Record<string, unknown>[];

@ApiProperty({ type: Number, required: false, default: 25 })
@IsNumber()
readonly datasetCount?: number;
Expand All @@ -18,13 +10,14 @@ export class UpdateUserSettingsDto {
@IsNumber()
readonly jobCount?: number;

@ApiProperty()
@IsArray()
readonly filters: FilterConfig[];

@ApiProperty()
@IsArray()
readonly conditions: ScientificCondition[];
@ApiProperty({
type: Object,
required: false,
default: {},
})
@IsOptional()
@IsObject()
readonly externalSettings?: Record<string, unknown>;
}

export class PartialUpdateUserSettingsDto extends PartialType(
Expand Down
50 changes: 0 additions & 50 deletions src/users/interceptors/create-user-settings.interceptor.ts

This file was deleted.

33 changes: 0 additions & 33 deletions src/users/interceptors/default-user-settings.interceptor.ts

This file was deleted.

Loading

0 comments on commit 09d2c75

Please sign in to comment.