@goweekdays/layer-common 1.5.12 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/PRIVACY_POLICY_JOBS.md +180 -0
- package/components/ContentEditor.client.vue +100 -0
- package/composables/useJobProfile.ts +385 -0
- package/composables/useUtils.ts +77 -0
- package/package.json +8 -2
- package/pages/privacy-policy-jobs.vue +368 -0
- package/plugins/vuetify.ts +8 -0
- package/types/job.profile.d.ts +137 -0
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Privacy Policy – GoWeekdays Job
|
|
2
|
+
|
|
3
|
+
**Effective Date:** [Insert Date]
|
|
4
|
+
|
|
5
|
+
GoWeekdays Job is a service operated by GoWeekdays Solutions OPC ("GoWeekdays", "we", "us", or "our"). This Privacy Policy explains how we collect, use, disclose, store, and protect personal data of individuals who create a job profile or otherwise use the GoWeekdays Job platform.
|
|
6
|
+
|
|
7
|
+
By creating a job profile or using GoWeekdays Job, you acknowledge that you have read, understood, and agreed to the practices described in this Privacy Policy.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. Scope of This Policy
|
|
12
|
+
|
|
13
|
+
This Privacy Policy applies to:
|
|
14
|
+
|
|
15
|
+
- Individuals who create or maintain a job seeker profile on GoWeekdays Job
|
|
16
|
+
- Individuals who interact with employers through the platform
|
|
17
|
+
- All personal data collected through web, mobile, or related GoWeekdays Job services
|
|
18
|
+
|
|
19
|
+
This policy should be read together with any applicable Terms of Service.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. Information We Collect
|
|
24
|
+
|
|
25
|
+
We collect personal data that you voluntarily provide when creating and maintaining a job profile, including but not limited to the following categories:
|
|
26
|
+
|
|
27
|
+
### 2.1 Personal and Contact Information
|
|
28
|
+
|
|
29
|
+
- First name and last name
|
|
30
|
+
- Professional headline
|
|
31
|
+
- Email address and email verification status
|
|
32
|
+
- Contact number and contact visibility preference
|
|
33
|
+
- Citizenship (optional)
|
|
34
|
+
|
|
35
|
+
### 2.2 Location and Mobility Information
|
|
36
|
+
|
|
37
|
+
- Country
|
|
38
|
+
- City / State
|
|
39
|
+
- Street address and postal code (optional)
|
|
40
|
+
- Willingness to relocate
|
|
41
|
+
|
|
42
|
+
### 2.3 Professional Summary
|
|
43
|
+
|
|
44
|
+
- Profile summary
|
|
45
|
+
- Additional profile details
|
|
46
|
+
|
|
47
|
+
### 2.4 Work Experience
|
|
48
|
+
|
|
49
|
+
- Job titles and company names
|
|
50
|
+
- Employment locations
|
|
51
|
+
- Employment start and end dates
|
|
52
|
+
- Current employment status
|
|
53
|
+
- Role descriptions and additional details
|
|
54
|
+
|
|
55
|
+
### 2.5 Education
|
|
56
|
+
|
|
57
|
+
- Level of education
|
|
58
|
+
- Field of study
|
|
59
|
+
- School name and location
|
|
60
|
+
- Enrollment status
|
|
61
|
+
- Start and end dates
|
|
62
|
+
- Additional details
|
|
63
|
+
|
|
64
|
+
### 2.6 Skills and Qualifications
|
|
65
|
+
|
|
66
|
+
- Skills
|
|
67
|
+
- Certifications and licenses
|
|
68
|
+
- Awards and recognitions
|
|
69
|
+
- Professional groups or organizations
|
|
70
|
+
- Languages and proficiency levels
|
|
71
|
+
|
|
72
|
+
### 2.7 Additional Professional Information (Optional)
|
|
73
|
+
|
|
74
|
+
- Military service information
|
|
75
|
+
- Patents
|
|
76
|
+
- Publications
|
|
77
|
+
- External links (e.g., portfolio, personal website)
|
|
78
|
+
|
|
79
|
+
### 2.8 System and Metadata
|
|
80
|
+
|
|
81
|
+
- Profile creation, update, and deletion timestamps
|
|
82
|
+
- Internal identifiers linked to your user account
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 3. How We Use Your Information
|
|
87
|
+
|
|
88
|
+
We use collected information for legitimate business and operational purposes, including to:
|
|
89
|
+
|
|
90
|
+
- Create and maintain your job seeker profile
|
|
91
|
+
- Display your profile to potential employers
|
|
92
|
+
- Match your profile with relevant job opportunities
|
|
93
|
+
- Enable communication between job seekers and employers
|
|
94
|
+
- Improve platform features, algorithms, analytics, and user experience
|
|
95
|
+
- Monitor platform usage and prevent misuse or fraud
|
|
96
|
+
- Comply with legal and regulatory obligations
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 4. Sharing and Disclosure of Information
|
|
101
|
+
|
|
102
|
+
By creating a job profile, you expressly consent to the sharing of your job profile information with:
|
|
103
|
+
|
|
104
|
+
- Employers and hiring organizations registered on GoWeekdays Job
|
|
105
|
+
- Authorized hiring partners using the platform for recruitment purposes
|
|
106
|
+
|
|
107
|
+
We do not sell personal data to third parties. Information is shared strictly for employment, recruitment, and platform-related purposes.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 5. Data Visibility and User Control
|
|
112
|
+
|
|
113
|
+
- You are responsible for the accuracy and completeness of your job profile.
|
|
114
|
+
- You may update, modify, or remove profile information at any time.
|
|
115
|
+
- Certain contact details will only be visible to employers if you enable visibility settings.
|
|
116
|
+
- Deleting your profile will remove it from active employer search results, subject to applicable data retention requirements.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 6. Legal Basis for Processing
|
|
121
|
+
|
|
122
|
+
We process personal data based on one or more of the following legal grounds:
|
|
123
|
+
|
|
124
|
+
- Your consent
|
|
125
|
+
- Performance of a contract or service request
|
|
126
|
+
- Legitimate interests related to operating and improving the platform
|
|
127
|
+
- Compliance with applicable laws and regulations
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 7. Data Retention
|
|
132
|
+
|
|
133
|
+
We retain personal data only for as long as necessary to:
|
|
134
|
+
|
|
135
|
+
- Provide GoWeekdays Job services
|
|
136
|
+
- Fulfill recruitment and employment-related purposes
|
|
137
|
+
- Comply with legal, accounting, or regulatory requirements
|
|
138
|
+
|
|
139
|
+
Data marked for deletion may be retained in archived or backup systems for a limited period in accordance with internal retention policies.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 8. Data Security
|
|
144
|
+
|
|
145
|
+
We implement reasonable administrative, technical, and organizational measures to protect personal data against unauthorized access, alteration, disclosure, or destruction.
|
|
146
|
+
|
|
147
|
+
While we strive to protect your data, no system can guarantee absolute security.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 9. Your Rights
|
|
152
|
+
|
|
153
|
+
Subject to applicable laws, you may have the right to:
|
|
154
|
+
|
|
155
|
+
- Access your personal data
|
|
156
|
+
- Request correction or updating of inaccurate data
|
|
157
|
+
- Request deletion of your data
|
|
158
|
+
- Withdraw consent where processing is based on consent
|
|
159
|
+
- Object to certain types of processing
|
|
160
|
+
|
|
161
|
+
Requests may be subject to verification and legal limitations.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 10. Changes to This Privacy Policy
|
|
166
|
+
|
|
167
|
+
We may update this Privacy Policy from time to time. Any changes will be effective upon publication on the platform. Continued use of GoWeekdays Job after changes take effect constitutes acceptance of the updated policy.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 11. Contact Information
|
|
172
|
+
|
|
173
|
+
For questions, concerns, or requests related to this Privacy Policy or data protection, please contact:
|
|
174
|
+
|
|
175
|
+
**GoWeekdays Support**
|
|
176
|
+
[Insert official contact email]
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
This Privacy Policy is intended to meet general data protection principles and applicable Philippine data privacy requirements.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-container v-if="editor" class="pa-0">
|
|
3
|
+
<v-row no-gutters class="border-sm border-opacity-50 rounded-lg">
|
|
4
|
+
<v-col cols="12" class="pa-1">
|
|
5
|
+
<v-btn-toggle multiple density="comfortable" variant="text">
|
|
6
|
+
<v-btn
|
|
7
|
+
icon="mdi-format-bold"
|
|
8
|
+
size="large"
|
|
9
|
+
:active="editor.isActive('bold')"
|
|
10
|
+
:disabled="!editor.can().toggleBold()"
|
|
11
|
+
@click="editor.chain().focus().toggleBold().run()"
|
|
12
|
+
/>
|
|
13
|
+
<v-btn
|
|
14
|
+
icon="mdi-format-italic"
|
|
15
|
+
size="large"
|
|
16
|
+
:active="editor.isActive('italic')"
|
|
17
|
+
:disabled="!editor.can().toggleItalic()"
|
|
18
|
+
@click="editor.chain().focus().toggleItalic().run()"
|
|
19
|
+
/>
|
|
20
|
+
<v-btn
|
|
21
|
+
icon="mdi-format-list-bulleted"
|
|
22
|
+
size="large"
|
|
23
|
+
:active="editor.isActive('bulletList')"
|
|
24
|
+
@click="editor.chain().focus().toggleBulletList().run()"
|
|
25
|
+
/>
|
|
26
|
+
<v-btn
|
|
27
|
+
icon="mdi-format-list-numbered"
|
|
28
|
+
size="large"
|
|
29
|
+
:active="editor.isActive('orderedList')"
|
|
30
|
+
@click="editor.chain().focus().toggleOrderedList().run()"
|
|
31
|
+
/>
|
|
32
|
+
</v-btn-toggle>
|
|
33
|
+
</v-col>
|
|
34
|
+
|
|
35
|
+
<v-divider opacity="50"></v-divider>
|
|
36
|
+
|
|
37
|
+
<v-col cols="12">
|
|
38
|
+
<editor-content :editor="editor" />
|
|
39
|
+
</v-col>
|
|
40
|
+
</v-row>
|
|
41
|
+
</v-container>
|
|
42
|
+
|
|
43
|
+
<v-input
|
|
44
|
+
v-model="strippedContent"
|
|
45
|
+
v-bind="$attrs"
|
|
46
|
+
@update:focused="test()"
|
|
47
|
+
></v-input>
|
|
48
|
+
</template>
|
|
49
|
+
|
|
50
|
+
<script setup lang="ts">
|
|
51
|
+
import StarterKit from "@tiptap/starter-kit";
|
|
52
|
+
import { Editor, EditorContent } from "@tiptap/vue-3";
|
|
53
|
+
|
|
54
|
+
function test() {
|
|
55
|
+
console.log("focused");
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
defineOptions({
|
|
59
|
+
inheritAttrs: false,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
const content = defineModel({
|
|
63
|
+
type: String,
|
|
64
|
+
default: "",
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const strippedContent = ref("");
|
|
68
|
+
|
|
69
|
+
strippedContent.value = content.value.replace(/<[^>]+>/g, "");
|
|
70
|
+
|
|
71
|
+
const editor = new Editor({
|
|
72
|
+
extensions: [StarterKit],
|
|
73
|
+
content: content.value,
|
|
74
|
+
onUpdate: () => {
|
|
75
|
+
content.value = editor.getHTML();
|
|
76
|
+
strippedContent.value = editor.getText();
|
|
77
|
+
},
|
|
78
|
+
editorProps: {
|
|
79
|
+
attributes: {
|
|
80
|
+
class: "custom-tiptap",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
</script>
|
|
85
|
+
|
|
86
|
+
<style lang="scss">
|
|
87
|
+
.tiptap {
|
|
88
|
+
outline: none;
|
|
89
|
+
|
|
90
|
+
ul,
|
|
91
|
+
ol {
|
|
92
|
+
li p {
|
|
93
|
+
margin: 0;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
.custom-tiptap {
|
|
98
|
+
padding: 16px;
|
|
99
|
+
}
|
|
100
|
+
</style>
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
export function useJobProfile() {
|
|
2
|
+
const jobProfile = ref<TJobProfile>({
|
|
3
|
+
_id: "",
|
|
4
|
+
user: "",
|
|
5
|
+
firstName: "",
|
|
6
|
+
lastName: "",
|
|
7
|
+
headline: "",
|
|
8
|
+
email: "",
|
|
9
|
+
contact: "",
|
|
10
|
+
country: "",
|
|
11
|
+
cityState: "",
|
|
12
|
+
streetAddress: "",
|
|
13
|
+
postalCode: "",
|
|
14
|
+
relocate: false,
|
|
15
|
+
showContact: false,
|
|
16
|
+
summary: "",
|
|
17
|
+
workExperience: [],
|
|
18
|
+
education: [],
|
|
19
|
+
skills: [],
|
|
20
|
+
certifications: [],
|
|
21
|
+
languages: [],
|
|
22
|
+
militaryExperience: {
|
|
23
|
+
country: "",
|
|
24
|
+
branch: "",
|
|
25
|
+
rank: "",
|
|
26
|
+
serving: false,
|
|
27
|
+
fromMonth: "",
|
|
28
|
+
fromYear: "",
|
|
29
|
+
},
|
|
30
|
+
patents: [],
|
|
31
|
+
publications: [],
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
function add(value: TJobProfile) {
|
|
35
|
+
return useNuxtApp().$api<TJobProfile>(`/api/job/profiles`, {
|
|
36
|
+
method: "POST",
|
|
37
|
+
body: value,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function getAll({ page = 1, limit = 50, status = "new", search = "" } = {}) {
|
|
42
|
+
return useNuxtApp().$api<Record<string, any>>(`/api/job/profiles`, {
|
|
43
|
+
method: "GET",
|
|
44
|
+
query: {
|
|
45
|
+
page,
|
|
46
|
+
limit,
|
|
47
|
+
status,
|
|
48
|
+
search,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function getByUser(user: string) {
|
|
54
|
+
return useNuxtApp().$api<TJobProfile>(`/api/job/profiles/user/${user}`, {
|
|
55
|
+
method: "GET",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function updateContactInfoById(
|
|
60
|
+
id: string,
|
|
61
|
+
options: {
|
|
62
|
+
firstName?: string;
|
|
63
|
+
lastName?: string;
|
|
64
|
+
headline?: string;
|
|
65
|
+
contact?: string;
|
|
66
|
+
showContact?: boolean;
|
|
67
|
+
country?: string;
|
|
68
|
+
cityState?: string;
|
|
69
|
+
streetAddress?: string;
|
|
70
|
+
postalCode?: string;
|
|
71
|
+
relocate?: boolean;
|
|
72
|
+
}
|
|
73
|
+
) {
|
|
74
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
75
|
+
`/api/job/profiles/id/${id}/contact-info`,
|
|
76
|
+
{
|
|
77
|
+
method: "PATCH",
|
|
78
|
+
body: options,
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function updateSummaryById(id: string, summary: string) {
|
|
84
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
85
|
+
`/api/job/profiles/id/${id}/summary`,
|
|
86
|
+
{
|
|
87
|
+
method: "PATCH",
|
|
88
|
+
body: { summary },
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function updatePersonalInfoById(
|
|
94
|
+
id: string,
|
|
95
|
+
options: {
|
|
96
|
+
citizenship?: string;
|
|
97
|
+
}
|
|
98
|
+
) {
|
|
99
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
100
|
+
`/api/job/profiles/id/${id}/personal-info`,
|
|
101
|
+
{
|
|
102
|
+
method: "PATCH",
|
|
103
|
+
body: options,
|
|
104
|
+
}
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function addWorkExpById(
|
|
109
|
+
id: string,
|
|
110
|
+
options: Pick<
|
|
111
|
+
TJobProfileWorkExp,
|
|
112
|
+
| "jobTitle"
|
|
113
|
+
| "company"
|
|
114
|
+
| "country"
|
|
115
|
+
| "cityState"
|
|
116
|
+
| "fromMonth"
|
|
117
|
+
| "fromYear"
|
|
118
|
+
| "toMonth"
|
|
119
|
+
| "toYear"
|
|
120
|
+
| "currentlyWorking"
|
|
121
|
+
| "description"
|
|
122
|
+
| "additionalDetails"
|
|
123
|
+
>
|
|
124
|
+
) {
|
|
125
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
126
|
+
`/api/job/profiles/id/${id}/work-experience`,
|
|
127
|
+
{
|
|
128
|
+
method: "POST",
|
|
129
|
+
body: options,
|
|
130
|
+
}
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function updateWorkExpById(
|
|
135
|
+
id: string,
|
|
136
|
+
options: Pick<
|
|
137
|
+
TJobProfileWorkExp,
|
|
138
|
+
| "id"
|
|
139
|
+
| "jobTitle"
|
|
140
|
+
| "company"
|
|
141
|
+
| "country"
|
|
142
|
+
| "cityState"
|
|
143
|
+
| "fromMonth"
|
|
144
|
+
| "fromYear"
|
|
145
|
+
| "toMonth"
|
|
146
|
+
| "toYear"
|
|
147
|
+
| "currentlyWorking"
|
|
148
|
+
| "description"
|
|
149
|
+
| "additionalDetails"
|
|
150
|
+
>
|
|
151
|
+
) {
|
|
152
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
153
|
+
`/api/job/profiles/id/${id}/work-experience`,
|
|
154
|
+
{
|
|
155
|
+
method: "PATCH",
|
|
156
|
+
body: options,
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function deleteWorkExpById(id: string, workExpId: string) {
|
|
162
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
163
|
+
`/api/job/profiles/id/${id}/work-experience/${workExpId}`,
|
|
164
|
+
{
|
|
165
|
+
method: "DELETE",
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function addEduById(
|
|
171
|
+
id: string,
|
|
172
|
+
options: Pick<
|
|
173
|
+
TJobProfileEdu,
|
|
174
|
+
| "levelOfEducation"
|
|
175
|
+
| "fieldOfStudy"
|
|
176
|
+
| "schoolName"
|
|
177
|
+
| "country"
|
|
178
|
+
| "location"
|
|
179
|
+
| "currentlyEnrolled"
|
|
180
|
+
| "fromMonth"
|
|
181
|
+
| "fromYear"
|
|
182
|
+
| "toMonth"
|
|
183
|
+
| "toYear"
|
|
184
|
+
| "additionalDetails"
|
|
185
|
+
>
|
|
186
|
+
) {
|
|
187
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
188
|
+
`/api/job/profiles/id/${id}/education`,
|
|
189
|
+
{
|
|
190
|
+
method: "POST",
|
|
191
|
+
body: options,
|
|
192
|
+
}
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function updateEduById(
|
|
197
|
+
id: string,
|
|
198
|
+
options: Pick<
|
|
199
|
+
TJobProfileEdu,
|
|
200
|
+
| "id"
|
|
201
|
+
| "levelOfEducation"
|
|
202
|
+
| "fieldOfStudy"
|
|
203
|
+
| "schoolName"
|
|
204
|
+
| "country"
|
|
205
|
+
| "location"
|
|
206
|
+
| "currentlyEnrolled"
|
|
207
|
+
| "fromMonth"
|
|
208
|
+
| "fromYear"
|
|
209
|
+
| "toMonth"
|
|
210
|
+
| "toYear"
|
|
211
|
+
| "additionalDetails"
|
|
212
|
+
>
|
|
213
|
+
) {
|
|
214
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
215
|
+
`/api/job/profiles/id/${id}/education`,
|
|
216
|
+
{
|
|
217
|
+
method: "PATCH",
|
|
218
|
+
body: options,
|
|
219
|
+
}
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function deleteEduById(id: string, eduId: string) {
|
|
224
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
225
|
+
`/api/job/profiles/id/${id}/education/${eduId}`,
|
|
226
|
+
{
|
|
227
|
+
method: "DELETE",
|
|
228
|
+
}
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function addSkillById(
|
|
233
|
+
id: string,
|
|
234
|
+
options: Pick<TJobProfileSkill, "name" | "proficiency">
|
|
235
|
+
) {
|
|
236
|
+
return useNuxtApp().$api<TJobProfile>(`/api/job/profiles/id/${id}/skills`, {
|
|
237
|
+
method: "POST",
|
|
238
|
+
body: options,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
function updateSkillById(
|
|
243
|
+
id: string,
|
|
244
|
+
options: Pick<TJobProfileSkill, "id" | "name" | "proficiency">
|
|
245
|
+
) {
|
|
246
|
+
return useNuxtApp().$api<TJobProfile>(`/api/job/profiles/id/${id}/skills`, {
|
|
247
|
+
method: "PATCH",
|
|
248
|
+
body: options,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
function deleteSkillById(id: string, skillId: string) {
|
|
253
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
254
|
+
`/api/job/profiles/id/${id}/skills/${skillId}`,
|
|
255
|
+
{
|
|
256
|
+
method: "DELETE",
|
|
257
|
+
}
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function updateAdditionalInfoById(id: string, additionalInfo: string) {
|
|
262
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
263
|
+
`/api/job/profiles/id/${id}/additional-info`,
|
|
264
|
+
{
|
|
265
|
+
method: "PATCH",
|
|
266
|
+
body: { additionalInfo },
|
|
267
|
+
}
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function addLangById(
|
|
272
|
+
id: string,
|
|
273
|
+
options: Pick<TJobProfileLang, "language" | "proficiency">
|
|
274
|
+
) {
|
|
275
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
276
|
+
`/api/job/profiles/id/${id}/languages`,
|
|
277
|
+
{
|
|
278
|
+
method: "POST",
|
|
279
|
+
body: options,
|
|
280
|
+
}
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
function updateLangById(
|
|
285
|
+
id: string,
|
|
286
|
+
options: Pick<TJobProfileLang, "id" | "language" | "proficiency">
|
|
287
|
+
) {
|
|
288
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
289
|
+
`/api/job/profiles/id/${id}/languages`,
|
|
290
|
+
{
|
|
291
|
+
method: "PATCH",
|
|
292
|
+
body: options,
|
|
293
|
+
}
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
function deleteLangById(id: string, langId: string) {
|
|
298
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
299
|
+
`/api/job/profiles/id/${id}/languages/${langId}`,
|
|
300
|
+
{
|
|
301
|
+
method: "DELETE",
|
|
302
|
+
}
|
|
303
|
+
);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function addCertById(
|
|
307
|
+
id: string,
|
|
308
|
+
options: Pick<
|
|
309
|
+
TJobProfileCert,
|
|
310
|
+
| "title"
|
|
311
|
+
| "noExpiry"
|
|
312
|
+
| "fromMonth"
|
|
313
|
+
| "fromYear"
|
|
314
|
+
| "toMonth"
|
|
315
|
+
| "toYear"
|
|
316
|
+
| "description"
|
|
317
|
+
>
|
|
318
|
+
) {
|
|
319
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
320
|
+
`/api/job/profiles/id/${id}/certifications`,
|
|
321
|
+
{
|
|
322
|
+
method: "POST",
|
|
323
|
+
body: options,
|
|
324
|
+
}
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
function updateCertById(
|
|
329
|
+
id: string,
|
|
330
|
+
options: Pick<
|
|
331
|
+
TJobProfileCert,
|
|
332
|
+
| "id"
|
|
333
|
+
| "title"
|
|
334
|
+
| "noExpiry"
|
|
335
|
+
| "fromMonth"
|
|
336
|
+
| "fromYear"
|
|
337
|
+
| "toMonth"
|
|
338
|
+
| "toYear"
|
|
339
|
+
| "description"
|
|
340
|
+
>
|
|
341
|
+
) {
|
|
342
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
343
|
+
`/api/job/profiles/id/${id}/certifications`,
|
|
344
|
+
{
|
|
345
|
+
method: "PATCH",
|
|
346
|
+
body: options,
|
|
347
|
+
}
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
function deleteCertById(id: string, certId: string) {
|
|
352
|
+
return useNuxtApp().$api<TJobProfile>(
|
|
353
|
+
`/api/job/profiles/id/${id}/certifications/${certId}`,
|
|
354
|
+
{
|
|
355
|
+
method: "DELETE",
|
|
356
|
+
}
|
|
357
|
+
);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
return {
|
|
361
|
+
jobProfile,
|
|
362
|
+
add,
|
|
363
|
+
getAll,
|
|
364
|
+
getByUser,
|
|
365
|
+
updateContactInfoById,
|
|
366
|
+
updateSummaryById,
|
|
367
|
+
updatePersonalInfoById,
|
|
368
|
+
addWorkExpById,
|
|
369
|
+
updateWorkExpById,
|
|
370
|
+
deleteWorkExpById,
|
|
371
|
+
addEduById,
|
|
372
|
+
updateEduById,
|
|
373
|
+
deleteEduById,
|
|
374
|
+
addSkillById,
|
|
375
|
+
updateSkillById,
|
|
376
|
+
deleteSkillById,
|
|
377
|
+
updateAdditionalInfoById,
|
|
378
|
+
addLangById,
|
|
379
|
+
updateLangById,
|
|
380
|
+
deleteLangById,
|
|
381
|
+
addCertById,
|
|
382
|
+
updateCertById,
|
|
383
|
+
deleteCertById,
|
|
384
|
+
};
|
|
385
|
+
}
|
package/composables/useUtils.ts
CHANGED
|
@@ -451,6 +451,81 @@ export default function useUtils() {
|
|
|
451
451
|
});
|
|
452
452
|
}
|
|
453
453
|
|
|
454
|
+
const months = [
|
|
455
|
+
{
|
|
456
|
+
title: "January",
|
|
457
|
+
value: "january",
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
title: "February",
|
|
461
|
+
value: "february",
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
title: "March",
|
|
465
|
+
value: "march",
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
title: "April",
|
|
469
|
+
value: "april",
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
title: "May",
|
|
473
|
+
value: "may",
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
title: "June",
|
|
477
|
+
value: "june",
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
title: "July",
|
|
481
|
+
value: "july",
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
title: "August",
|
|
485
|
+
value: "august",
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
title: "September",
|
|
489
|
+
value: "september",
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
title: "October",
|
|
493
|
+
value: "october",
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
title: "November",
|
|
497
|
+
value: "november",
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
title: "December",
|
|
501
|
+
value: "december",
|
|
502
|
+
},
|
|
503
|
+
];
|
|
504
|
+
|
|
505
|
+
function generateYears(
|
|
506
|
+
generation = 0,
|
|
507
|
+
mode = "past",
|
|
508
|
+
currentYear = new Date().getFullYear()
|
|
509
|
+
) {
|
|
510
|
+
const years = [];
|
|
511
|
+
|
|
512
|
+
if (mode === "past") {
|
|
513
|
+
// Generate from current year going back to past years
|
|
514
|
+
for (let i = 0; i <= generation; i++) {
|
|
515
|
+
const year = currentYear - i;
|
|
516
|
+
years.push(year.toString());
|
|
517
|
+
}
|
|
518
|
+
} else if (mode === "future") {
|
|
519
|
+
// Generate from current year going forward to future years
|
|
520
|
+
for (let i = 0; i <= generation; i++) {
|
|
521
|
+
const year = currentYear + i;
|
|
522
|
+
years.push(year.toString());
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
return years;
|
|
527
|
+
}
|
|
528
|
+
|
|
454
529
|
return {
|
|
455
530
|
requiredRule,
|
|
456
531
|
emailRule,
|
|
@@ -482,5 +557,7 @@ export default function useUtils() {
|
|
|
482
557
|
requireSlug,
|
|
483
558
|
generatePaymentPromoCode,
|
|
484
559
|
copyToClipboard,
|
|
560
|
+
months,
|
|
561
|
+
generateYears,
|
|
485
562
|
};
|
|
486
563
|
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@goweekdays/layer-common",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.6.0",
|
|
6
6
|
"main": "./nuxt.config.ts",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
@@ -30,6 +30,12 @@
|
|
|
30
30
|
"@iconify/vue": "^5.0.0",
|
|
31
31
|
"@mdi/font": "^7.4.47",
|
|
32
32
|
"sass": "^1.80.6",
|
|
33
|
-
"zod": "^3.24.2"
|
|
33
|
+
"zod": "^3.24.2",
|
|
34
|
+
"@tiptap/extension-list": "^3.15.3",
|
|
35
|
+
"@tiptap/extension-text-align": "^3.15.3",
|
|
36
|
+
"@tiptap/extension-text-style": "^3.15.3",
|
|
37
|
+
"@tiptap/pm": "^3.15.3",
|
|
38
|
+
"@tiptap/starter-kit": "^3.15.3",
|
|
39
|
+
"@tiptap/vue-3": "^3.15.3"
|
|
34
40
|
}
|
|
35
41
|
}
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-row no-gutters class="pa-4" justify="center">
|
|
3
|
+
<v-col cols="12" lg="8">
|
|
4
|
+
<v-card width="100%" variant="flat">
|
|
5
|
+
<v-card-title class="text-h3 font-weight-bold pa-6">
|
|
6
|
+
Privacy Policy – GoWeekdays Job
|
|
7
|
+
</v-card-title>
|
|
8
|
+
|
|
9
|
+
<v-card-text class="px-6 pb-6">
|
|
10
|
+
<p class="text-subtitle-1 mb-6">
|
|
11
|
+
<strong>Effective Date:</strong> January 1, 2026
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p class="mb-6">
|
|
15
|
+
GoWeekdays Job is a service operated by GoWeekdays Solutions OPC
|
|
16
|
+
("GoWeekdays", "we", "us", or "our"). This Privacy Policy explains
|
|
17
|
+
how we collect, use, disclose, store, and protect personal data of
|
|
18
|
+
individuals who create a job profile or otherwise use the GoWeekdays
|
|
19
|
+
Job platform.
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
<p class="mb-8">
|
|
23
|
+
By creating a job profile or using GoWeekdays Job, you acknowledge
|
|
24
|
+
that you have read, understood, and agreed to the practices
|
|
25
|
+
described in this Privacy Policy.
|
|
26
|
+
</p>
|
|
27
|
+
|
|
28
|
+
<v-divider class="my-6"></v-divider>
|
|
29
|
+
|
|
30
|
+
<!-- Section 1 -->
|
|
31
|
+
<div class="mb-8">
|
|
32
|
+
<h2 class="text-h5 font-weight-bold mb-4">
|
|
33
|
+
1. Scope of This Policy
|
|
34
|
+
</h2>
|
|
35
|
+
<p class="mb-3">This Privacy Policy applies to:</p>
|
|
36
|
+
<ul class="mb-4">
|
|
37
|
+
<li>
|
|
38
|
+
Individuals who create or maintain a job seeker profile on
|
|
39
|
+
GoWeekdays Job
|
|
40
|
+
</li>
|
|
41
|
+
<li>
|
|
42
|
+
Individuals who interact with employers through the platform
|
|
43
|
+
</li>
|
|
44
|
+
<li>
|
|
45
|
+
All personal data collected through web, mobile, or related
|
|
46
|
+
GoWeekdays Job services
|
|
47
|
+
</li>
|
|
48
|
+
</ul>
|
|
49
|
+
<p>
|
|
50
|
+
This policy should be read together with any applicable Terms of
|
|
51
|
+
Service.
|
|
52
|
+
</p>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<v-divider class="my-6"></v-divider>
|
|
56
|
+
|
|
57
|
+
<!-- Section 2 -->
|
|
58
|
+
<div class="mb-8">
|
|
59
|
+
<h2 class="text-h5 font-weight-bold mb-4">
|
|
60
|
+
2. Information We Collect
|
|
61
|
+
</h2>
|
|
62
|
+
<p class="mb-4">
|
|
63
|
+
We collect personal data that you voluntarily provide when
|
|
64
|
+
creating and maintaining a job profile, including but not limited
|
|
65
|
+
to the following categories:
|
|
66
|
+
</p>
|
|
67
|
+
|
|
68
|
+
<div class="mb-5">
|
|
69
|
+
<h3 class="text-h6 font-weight-medium mb-3">
|
|
70
|
+
2.1 Personal and Contact Information
|
|
71
|
+
</h3>
|
|
72
|
+
<ul>
|
|
73
|
+
<li>First name and last name</li>
|
|
74
|
+
<li>Professional headline</li>
|
|
75
|
+
<li>Email address and email verification status</li>
|
|
76
|
+
<li>Contact number and contact visibility preference</li>
|
|
77
|
+
<li>Citizenship (optional)</li>
|
|
78
|
+
</ul>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<div class="mb-5">
|
|
82
|
+
<h3 class="text-h6 font-weight-medium mb-3">
|
|
83
|
+
2.2 Location and Mobility Information
|
|
84
|
+
</h3>
|
|
85
|
+
<ul>
|
|
86
|
+
<li>Country</li>
|
|
87
|
+
<li>City / State</li>
|
|
88
|
+
<li>Street address and postal code (optional)</li>
|
|
89
|
+
<li>Willingness to relocate</li>
|
|
90
|
+
</ul>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
<div class="mb-5">
|
|
94
|
+
<h3 class="text-h6 font-weight-medium mb-3">
|
|
95
|
+
2.3 Professional Summary
|
|
96
|
+
</h3>
|
|
97
|
+
<ul>
|
|
98
|
+
<li>Profile summary</li>
|
|
99
|
+
<li>Additional profile details</li>
|
|
100
|
+
</ul>
|
|
101
|
+
</div>
|
|
102
|
+
|
|
103
|
+
<div class="mb-5">
|
|
104
|
+
<h3 class="text-h6 font-weight-medium mb-3">
|
|
105
|
+
2.4 Work Experience
|
|
106
|
+
</h3>
|
|
107
|
+
<ul>
|
|
108
|
+
<li>Job titles and company names</li>
|
|
109
|
+
<li>Employment locations</li>
|
|
110
|
+
<li>Employment start and end dates</li>
|
|
111
|
+
<li>Current employment status</li>
|
|
112
|
+
<li>Role descriptions and additional details</li>
|
|
113
|
+
</ul>
|
|
114
|
+
</div>
|
|
115
|
+
|
|
116
|
+
<div class="mb-5">
|
|
117
|
+
<h3 class="text-h6 font-weight-medium mb-3">2.5 Education</h3>
|
|
118
|
+
<ul>
|
|
119
|
+
<li>Level of education</li>
|
|
120
|
+
<li>Field of study</li>
|
|
121
|
+
<li>School name and location</li>
|
|
122
|
+
<li>Enrollment status</li>
|
|
123
|
+
<li>Start and end dates</li>
|
|
124
|
+
<li>Additional details</li>
|
|
125
|
+
</ul>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<div class="mb-5">
|
|
129
|
+
<h3 class="text-h6 font-weight-medium mb-3">
|
|
130
|
+
2.6 Skills and Qualifications
|
|
131
|
+
</h3>
|
|
132
|
+
<ul>
|
|
133
|
+
<li>Skills</li>
|
|
134
|
+
<li>Certifications and licenses</li>
|
|
135
|
+
<li>Awards and recognitions</li>
|
|
136
|
+
<li>Professional groups or organizations</li>
|
|
137
|
+
<li>Languages and proficiency levels</li>
|
|
138
|
+
</ul>
|
|
139
|
+
</div>
|
|
140
|
+
|
|
141
|
+
<div class="mb-5">
|
|
142
|
+
<h3 class="text-h6 font-weight-medium mb-3">
|
|
143
|
+
2.7 Additional Professional Information (Optional)
|
|
144
|
+
</h3>
|
|
145
|
+
<ul>
|
|
146
|
+
<li>Military service information</li>
|
|
147
|
+
<li>Patents</li>
|
|
148
|
+
<li>Publications</li>
|
|
149
|
+
<li>External links (e.g., portfolio, personal website)</li>
|
|
150
|
+
</ul>
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
<div class="mb-5">
|
|
154
|
+
<h3 class="text-h6 font-weight-medium mb-3">
|
|
155
|
+
2.8 System and Metadata
|
|
156
|
+
</h3>
|
|
157
|
+
<ul>
|
|
158
|
+
<li>Profile creation, update, and deletion timestamps</li>
|
|
159
|
+
<li>Internal identifiers linked to your user account</li>
|
|
160
|
+
</ul>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
<v-divider class="my-6"></v-divider>
|
|
165
|
+
|
|
166
|
+
<!-- Section 3 -->
|
|
167
|
+
<div class="mb-8">
|
|
168
|
+
<h2 class="text-h5 font-weight-bold mb-4">
|
|
169
|
+
3. How We Use Your Information
|
|
170
|
+
</h2>
|
|
171
|
+
<p class="mb-3">
|
|
172
|
+
We use collected information for legitimate business and
|
|
173
|
+
operational purposes, including to:
|
|
174
|
+
</p>
|
|
175
|
+
<ul>
|
|
176
|
+
<li>Create and maintain your job seeker profile</li>
|
|
177
|
+
<li>Display your profile to potential employers</li>
|
|
178
|
+
<li>Match your profile with relevant job opportunities</li>
|
|
179
|
+
<li>Enable communication between job seekers and employers</li>
|
|
180
|
+
<li>
|
|
181
|
+
Improve platform features, algorithms, analytics, and user
|
|
182
|
+
experience
|
|
183
|
+
</li>
|
|
184
|
+
<li>Monitor platform usage and prevent misuse or fraud</li>
|
|
185
|
+
<li>Comply with legal and regulatory obligations</li>
|
|
186
|
+
</ul>
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
<v-divider class="my-6"></v-divider>
|
|
190
|
+
|
|
191
|
+
<!-- Section 4 -->
|
|
192
|
+
<div class="mb-8">
|
|
193
|
+
<h2 class="text-h5 font-weight-bold mb-4">
|
|
194
|
+
4. Sharing and Disclosure of Information
|
|
195
|
+
</h2>
|
|
196
|
+
<p class="mb-3">
|
|
197
|
+
By creating a job profile, you expressly consent to the sharing of
|
|
198
|
+
your job profile information with:
|
|
199
|
+
</p>
|
|
200
|
+
<ul class="mb-4">
|
|
201
|
+
<li>
|
|
202
|
+
Employers and hiring organizations registered on GoWeekdays Job
|
|
203
|
+
</li>
|
|
204
|
+
<li>
|
|
205
|
+
Authorized hiring partners using the platform for recruitment
|
|
206
|
+
purposes
|
|
207
|
+
</li>
|
|
208
|
+
</ul>
|
|
209
|
+
<p>
|
|
210
|
+
We do not sell personal data to third parties. Information is
|
|
211
|
+
shared strictly for employment, recruitment, and platform-related
|
|
212
|
+
purposes.
|
|
213
|
+
</p>
|
|
214
|
+
</div>
|
|
215
|
+
|
|
216
|
+
<v-divider class="my-6"></v-divider>
|
|
217
|
+
|
|
218
|
+
<!-- Section 5 -->
|
|
219
|
+
<div class="mb-8">
|
|
220
|
+
<h2 class="text-h5 font-weight-bold mb-4">
|
|
221
|
+
5. Data Visibility and User Control
|
|
222
|
+
</h2>
|
|
223
|
+
<ul>
|
|
224
|
+
<li>
|
|
225
|
+
You are responsible for the accuracy and completeness of your
|
|
226
|
+
job profile.
|
|
227
|
+
</li>
|
|
228
|
+
<li>
|
|
229
|
+
You may update, modify, or remove profile information at any
|
|
230
|
+
time.
|
|
231
|
+
</li>
|
|
232
|
+
<li>
|
|
233
|
+
Certain contact details will only be visible to employers if you
|
|
234
|
+
enable visibility settings.
|
|
235
|
+
</li>
|
|
236
|
+
<li>
|
|
237
|
+
Deleting your profile will remove it from active employer search
|
|
238
|
+
results, subject to applicable data retention requirements.
|
|
239
|
+
</li>
|
|
240
|
+
</ul>
|
|
241
|
+
</div>
|
|
242
|
+
|
|
243
|
+
<v-divider class="my-6"></v-divider>
|
|
244
|
+
|
|
245
|
+
<!-- Section 6 -->
|
|
246
|
+
<div class="mb-8">
|
|
247
|
+
<h2 class="text-h5 font-weight-bold mb-4">
|
|
248
|
+
6. Legal Basis for Processing
|
|
249
|
+
</h2>
|
|
250
|
+
<p class="mb-3">
|
|
251
|
+
We process personal data based on one or more of the following
|
|
252
|
+
legal grounds:
|
|
253
|
+
</p>
|
|
254
|
+
<ul>
|
|
255
|
+
<li>Your consent</li>
|
|
256
|
+
<li>Performance of a contract or service request</li>
|
|
257
|
+
<li>
|
|
258
|
+
Legitimate interests related to operating and improving the
|
|
259
|
+
platform
|
|
260
|
+
</li>
|
|
261
|
+
<li>Compliance with applicable laws and regulations</li>
|
|
262
|
+
</ul>
|
|
263
|
+
</div>
|
|
264
|
+
|
|
265
|
+
<v-divider class="my-6"></v-divider>
|
|
266
|
+
|
|
267
|
+
<!-- Section 7 -->
|
|
268
|
+
<div class="mb-8">
|
|
269
|
+
<h2 class="text-h5 font-weight-bold mb-4">7. Data Retention</h2>
|
|
270
|
+
<p class="mb-3">
|
|
271
|
+
We retain personal data only for as long as necessary to:
|
|
272
|
+
</p>
|
|
273
|
+
<ul class="mb-4">
|
|
274
|
+
<li>Provide GoWeekdays Job services</li>
|
|
275
|
+
<li>Fulfill recruitment and employment-related purposes</li>
|
|
276
|
+
<li>Comply with legal, accounting, or regulatory requirements</li>
|
|
277
|
+
</ul>
|
|
278
|
+
<p>
|
|
279
|
+
Data marked for deletion may be retained in archived or backup
|
|
280
|
+
systems for a limited period in accordance with internal retention
|
|
281
|
+
policies.
|
|
282
|
+
</p>
|
|
283
|
+
</div>
|
|
284
|
+
|
|
285
|
+
<v-divider class="my-6"></v-divider>
|
|
286
|
+
|
|
287
|
+
<!-- Section 8 -->
|
|
288
|
+
<div class="mb-8">
|
|
289
|
+
<h2 class="text-h5 font-weight-bold mb-4">8. Data Security</h2>
|
|
290
|
+
<p class="mb-3">
|
|
291
|
+
We implement reasonable administrative, technical, and
|
|
292
|
+
organizational measures to protect personal data against
|
|
293
|
+
unauthorized access, alteration, disclosure, or destruction.
|
|
294
|
+
</p>
|
|
295
|
+
<p>
|
|
296
|
+
While we strive to protect your data, no system can guarantee
|
|
297
|
+
absolute security.
|
|
298
|
+
</p>
|
|
299
|
+
</div>
|
|
300
|
+
|
|
301
|
+
<v-divider class="my-6"></v-divider>
|
|
302
|
+
|
|
303
|
+
<!-- Section 9 -->
|
|
304
|
+
<div class="mb-8">
|
|
305
|
+
<h2 class="text-h5 font-weight-bold mb-4">9. Your Rights</h2>
|
|
306
|
+
<p class="mb-3">
|
|
307
|
+
Subject to applicable laws, you may have the right to:
|
|
308
|
+
</p>
|
|
309
|
+
<ul class="mb-4">
|
|
310
|
+
<li>Access your personal data</li>
|
|
311
|
+
<li>Request correction or updating of inaccurate data</li>
|
|
312
|
+
<li>Request deletion of your data</li>
|
|
313
|
+
<li>Withdraw consent where processing is based on consent</li>
|
|
314
|
+
<li>Object to certain types of processing</li>
|
|
315
|
+
</ul>
|
|
316
|
+
<p>
|
|
317
|
+
Requests may be subject to verification and legal limitations.
|
|
318
|
+
</p>
|
|
319
|
+
</div>
|
|
320
|
+
|
|
321
|
+
<v-divider class="my-6"></v-divider>
|
|
322
|
+
|
|
323
|
+
<!-- Section 10 -->
|
|
324
|
+
<div class="mb-8">
|
|
325
|
+
<h2 class="text-h5 font-weight-bold mb-4">
|
|
326
|
+
10. Changes to This Privacy Policy
|
|
327
|
+
</h2>
|
|
328
|
+
<p class="mb-3">
|
|
329
|
+
We may update this Privacy Policy from time to time. Any changes
|
|
330
|
+
will be effective upon publication on the platform. Continued use
|
|
331
|
+
of GoWeekdays Job after changes take effect constitutes acceptance
|
|
332
|
+
of the updated policy.
|
|
333
|
+
</p>
|
|
334
|
+
</div>
|
|
335
|
+
|
|
336
|
+
<v-divider class="my-6"></v-divider>
|
|
337
|
+
|
|
338
|
+
<!-- Section 11 -->
|
|
339
|
+
<div class="mb-8">
|
|
340
|
+
<h2 class="text-h5 font-weight-bold mb-4">
|
|
341
|
+
11. Contact Information
|
|
342
|
+
</h2>
|
|
343
|
+
<p class="mb-3">
|
|
344
|
+
For questions, concerns, or requests related to this Privacy
|
|
345
|
+
Policy or data protection, please contact:
|
|
346
|
+
</p>
|
|
347
|
+
<p class="font-weight-medium mb-2">GoWeekdays Support</p>
|
|
348
|
+
<p>support@goweekdays.com</p>
|
|
349
|
+
</div>
|
|
350
|
+
|
|
351
|
+
<v-divider class="my-6"></v-divider>
|
|
352
|
+
|
|
353
|
+
<p class="text-caption mt-6">
|
|
354
|
+
This Privacy Policy is intended to meet general data protection
|
|
355
|
+
principles and applicable Philippine data privacy requirements.
|
|
356
|
+
</p>
|
|
357
|
+
</v-card-text>
|
|
358
|
+
</v-card>
|
|
359
|
+
</v-col>
|
|
360
|
+
</v-row>
|
|
361
|
+
</template>
|
|
362
|
+
|
|
363
|
+
<script setup lang="ts">
|
|
364
|
+
definePageMeta({
|
|
365
|
+
title: "Privacy Policy – GoWeekdays Job",
|
|
366
|
+
layout: "plain",
|
|
367
|
+
});
|
|
368
|
+
</script>
|
package/plugins/vuetify.ts
CHANGED
|
@@ -5,6 +5,7 @@ import "vuetify/styles";
|
|
|
5
5
|
import { createVuetify } from "vuetify";
|
|
6
6
|
import { h } from "vue";
|
|
7
7
|
import { Icon } from "@iconify/vue";
|
|
8
|
+
import { VMaskInput } from "vuetify/labs/VMaskInput";
|
|
8
9
|
|
|
9
10
|
const defaultTheme = {
|
|
10
11
|
dark: false,
|
|
@@ -37,6 +38,10 @@ export default defineNuxtPlugin((app) => {
|
|
|
37
38
|
variant: "outlined",
|
|
38
39
|
density: "comfortable",
|
|
39
40
|
},
|
|
41
|
+
VMaskInput: {
|
|
42
|
+
variant: "outlined",
|
|
43
|
+
density: "comfortable",
|
|
44
|
+
},
|
|
40
45
|
},
|
|
41
46
|
theme: {
|
|
42
47
|
defaultTheme: "defaultTheme",
|
|
@@ -53,6 +58,9 @@ export default defineNuxtPlugin((app) => {
|
|
|
53
58
|
},
|
|
54
59
|
},
|
|
55
60
|
},
|
|
61
|
+
components: {
|
|
62
|
+
VMaskInput,
|
|
63
|
+
},
|
|
56
64
|
});
|
|
57
65
|
|
|
58
66
|
app.vueApp.use(vuetify);
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
declare type TJobProfileWorkExp = {
|
|
2
|
+
id: string;
|
|
3
|
+
jobTitle: string;
|
|
4
|
+
company: string;
|
|
5
|
+
country: string;
|
|
6
|
+
cityState?: string;
|
|
7
|
+
fromMonth: string;
|
|
8
|
+
fromYear: string;
|
|
9
|
+
toMonth?: string;
|
|
10
|
+
toYear?: string;
|
|
11
|
+
currentlyWorking?: boolean;
|
|
12
|
+
description?: string;
|
|
13
|
+
additionalDetails?: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
declare type TJobProfileEdu = {
|
|
17
|
+
id: string;
|
|
18
|
+
levelOfEducation: string;
|
|
19
|
+
fieldOfStudy: string;
|
|
20
|
+
schoolName: string;
|
|
21
|
+
country: string;
|
|
22
|
+
location?: string;
|
|
23
|
+
currentlyEnrolled?: boolean;
|
|
24
|
+
fromMonth: string;
|
|
25
|
+
fromYear: string;
|
|
26
|
+
toMonth?: string;
|
|
27
|
+
toYear?: string;
|
|
28
|
+
additionalDetails?: string;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
declare type TJobProfileSkill = {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
proficiency?: string;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
declare type TJobProfileCert = {
|
|
38
|
+
id: string;
|
|
39
|
+
title: string;
|
|
40
|
+
noExpiry: boolean;
|
|
41
|
+
fromMonth: string;
|
|
42
|
+
fromYear: string;
|
|
43
|
+
toMonth?: string;
|
|
44
|
+
toYear?: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
declare type TJobProfileAward = {
|
|
49
|
+
id: string;
|
|
50
|
+
title: string;
|
|
51
|
+
fromMonth: string;
|
|
52
|
+
fromYear: string;
|
|
53
|
+
description?: string;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
declare type TJobProfileGroup = {
|
|
57
|
+
id: string;
|
|
58
|
+
title: string;
|
|
59
|
+
active: boolean;
|
|
60
|
+
fromMonth: string;
|
|
61
|
+
fromYear: string;
|
|
62
|
+
toMonth?: string;
|
|
63
|
+
toYear?: string;
|
|
64
|
+
description?: string;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
declare type TJobProfileLang = {
|
|
68
|
+
id: string;
|
|
69
|
+
language: string;
|
|
70
|
+
proficiency: string;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
declare type TJobProfileMilitaryExp = {
|
|
74
|
+
country: string;
|
|
75
|
+
branch: string;
|
|
76
|
+
rank: string;
|
|
77
|
+
serving: boolean;
|
|
78
|
+
fromMonth: string;
|
|
79
|
+
fromYear: string;
|
|
80
|
+
toMonth?: string;
|
|
81
|
+
toYear?: string;
|
|
82
|
+
description?: string;
|
|
83
|
+
commendations?: string;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
declare type TJobProfilePatent = {
|
|
87
|
+
id: string;
|
|
88
|
+
title: string;
|
|
89
|
+
patentNumber: string;
|
|
90
|
+
url?: string;
|
|
91
|
+
fromMonth: string;
|
|
92
|
+
fromYear: string;
|
|
93
|
+
description?: string;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
declare type TJobProfilePublication = {
|
|
97
|
+
id: string;
|
|
98
|
+
title: string;
|
|
99
|
+
url?: string;
|
|
100
|
+
fromMonth: string;
|
|
101
|
+
fromYear: string;
|
|
102
|
+
description?: string;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
declare type TJobProfile = {
|
|
106
|
+
_id?: string;
|
|
107
|
+
user: string;
|
|
108
|
+
firstName: string;
|
|
109
|
+
lastName: string;
|
|
110
|
+
headline?: string;
|
|
111
|
+
contact?: string;
|
|
112
|
+
showContact?: boolean;
|
|
113
|
+
email?: string;
|
|
114
|
+
verifiedEmail?: boolean;
|
|
115
|
+
country: string;
|
|
116
|
+
streetAddress?: string;
|
|
117
|
+
cityState: string;
|
|
118
|
+
postalCode?: string;
|
|
119
|
+
relocate?: boolean;
|
|
120
|
+
summary?: string;
|
|
121
|
+
citizenship?: string;
|
|
122
|
+
workExperience?: TJobProfileWorkExp[];
|
|
123
|
+
education?: TJobProfileEdu[];
|
|
124
|
+
skills?: TJobProfileSkill[];
|
|
125
|
+
certifications?: TJobProfileCert[];
|
|
126
|
+
additionalInfo?: string;
|
|
127
|
+
awards?: TJobProfileAward[];
|
|
128
|
+
groups?: TJobProfileGroup[];
|
|
129
|
+
languages?: TJobProfileLang[];
|
|
130
|
+
links?: string[];
|
|
131
|
+
militaryExperience?: TJobProfileMilitaryExp;
|
|
132
|
+
patents?: TJobProfilePatent[];
|
|
133
|
+
publications?: TJobProfilePublication[];
|
|
134
|
+
createdAt?: Date | String;
|
|
135
|
+
updatedAt?: Date | String;
|
|
136
|
+
deletedAt?: Date | String;
|
|
137
|
+
};
|