Skip to content

Commit b17d348

Browse files
authored
Merge pull request #15 from tnramalho/feature/server-auth
WIP: Feature/server auth
2 parents 473ae5c + 7a8ea8a commit b17d348

File tree

289 files changed

+32308
-6057
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

289 files changed

+32308
-6057
lines changed

.claude/settings.local.json

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"permissions": {
3+
"allow": [
4+
"Bash(yarn test)",
5+
"Bash(yarn test:e2e)",
6+
"Bash(yarn test:e2e:*)",
7+
"Bash(yarn build)",
8+
"Bash(mkdir:*)",
9+
"Bash(mv:*)",
10+
"Bash(rm:*)",
11+
"Bash(find:*)",
12+
"Bash(npm test:*)",
13+
"Bash(grep:*)",
14+
"Bash(npx tsc:*)",
15+
"Bash(npm run build:*)",
16+
"Bash(npm run test:e2e:*)",
17+
"Bash(npm run:*)",
18+
"Bash(sed:*)",
19+
"Bash(npx jest:*)",
20+
"Bash(npx eslint:*)",
21+
"WebFetch(domain:docs.nestjs.com)",
22+
"Bash(yarn start:dev)",
23+
"Bash(ls:*)",
24+
"Bash(yarn install)",
25+
"Bash(pkill -f \"nest start\")",
26+
"Bash(cp:*)",
27+
"Bash(yarn lint)",
28+
"Bash(yarn lint:*)",
29+
"Bash(yarn test:*)",
30+
"Bash(yarn clean)",
31+
"Bash(yarn workspaces:*)",
32+
"Bash(curl:*)",
33+
"Bash(true)",
34+
"Bash(timeout 10s npm run start:dev)",
35+
"Bash(npm install:*)",
36+
"Bash(yarn add:*)",
37+
"Bash(yarn test:*)"
38+
],
39+
"deny": []
40+
}
41+
}

.codacy/cli.sh

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
#!/usr/bin/env bash
2+
3+
4+
set -e +o pipefail
5+
6+
# Set up paths first
7+
bin_name="codacy-cli-v2"
8+
9+
# Determine OS-specific paths
10+
os_name=$(uname)
11+
arch=$(uname -m)
12+
13+
case "$arch" in
14+
"x86_64")
15+
arch="amd64"
16+
;;
17+
"x86")
18+
arch="386"
19+
;;
20+
"aarch64"|"arm64")
21+
arch="arm64"
22+
;;
23+
esac
24+
25+
if [ -z "$CODACY_CLI_V2_TMP_FOLDER" ]; then
26+
if [ "$(uname)" = "Linux" ]; then
27+
CODACY_CLI_V2_TMP_FOLDER="$HOME/.cache/codacy/codacy-cli-v2"
28+
elif [ "$(uname)" = "Darwin" ]; then
29+
CODACY_CLI_V2_TMP_FOLDER="$HOME/Library/Caches/Codacy/codacy-cli-v2"
30+
else
31+
CODACY_CLI_V2_TMP_FOLDER=".codacy-cli-v2"
32+
fi
33+
fi
34+
35+
version_file="$CODACY_CLI_V2_TMP_FOLDER/version.yaml"
36+
37+
38+
get_version_from_yaml() {
39+
if [ -f "$version_file" ]; then
40+
local version=$(grep -o 'version: *"[^"]*"' "$version_file" | cut -d'"' -f2)
41+
if [ -n "$version" ]; then
42+
echo "$version"
43+
return 0
44+
fi
45+
fi
46+
return 1
47+
}
48+
49+
get_latest_version() {
50+
local response
51+
if [ -n "$GH_TOKEN" ]; then
52+
response=$(curl -Lq --header "Authorization: Bearer $GH_TOKEN" "https://api.github.com/repos/codacy/codacy-cli-v2/releases/latest" 2>/dev/null)
53+
else
54+
response=$(curl -Lq "https://api.github.com/repos/codacy/codacy-cli-v2/releases/latest" 2>/dev/null)
55+
fi
56+
57+
handle_rate_limit "$response"
58+
local version=$(echo "$response" | grep -m 1 tag_name | cut -d'"' -f4)
59+
echo "$version"
60+
}
61+
62+
handle_rate_limit() {
63+
local response="$1"
64+
if echo "$response" | grep -q "API rate limit exceeded"; then
65+
fatal "Error: GitHub API rate limit exceeded. Please try again later"
66+
fi
67+
}
68+
69+
download_file() {
70+
local url="$1"
71+
72+
echo "Downloading from URL: ${url}"
73+
if command -v curl > /dev/null 2>&1; then
74+
curl -# -LS "$url" -O
75+
elif command -v wget > /dev/null 2>&1; then
76+
wget "$url"
77+
else
78+
fatal "Error: Could not find curl or wget, please install one."
79+
fi
80+
}
81+
82+
download() {
83+
local url="$1"
84+
local output_folder="$2"
85+
86+
( cd "$output_folder" && download_file "$url" )
87+
}
88+
89+
download_cli() {
90+
# OS name lower case
91+
suffix=$(echo "$os_name" | tr '[:upper:]' '[:lower:]')
92+
93+
local bin_folder="$1"
94+
local bin_path="$2"
95+
local version="$3"
96+
97+
if [ ! -f "$bin_path" ]; then
98+
echo "📥 Downloading CLI version $version..."
99+
100+
remote_file="codacy-cli-v2_${version}_${suffix}_${arch}.tar.gz"
101+
url="https://github.com/codacy/codacy-cli-v2/releases/download/${version}/${remote_file}"
102+
103+
download "$url" "$bin_folder"
104+
tar xzfv "${bin_folder}/${remote_file}" -C "${bin_folder}"
105+
fi
106+
}
107+
108+
# Warn if CODACY_CLI_V2_VERSION is set and update is requested
109+
if [ -n "$CODACY_CLI_V2_VERSION" ] && [ "$1" = "update" ]; then
110+
echo "⚠️ Warning: Performing update with forced version $CODACY_CLI_V2_VERSION"
111+
echo " Unset CODACY_CLI_V2_VERSION to use the latest version"
112+
fi
113+
114+
# Ensure version.yaml exists and is up to date
115+
if [ ! -f "$version_file" ] || [ "$1" = "update" ]; then
116+
echo "ℹ️ Fetching latest version..."
117+
version=$(get_latest_version)
118+
mkdir -p "$CODACY_CLI_V2_TMP_FOLDER"
119+
echo "version: \"$version\"" > "$version_file"
120+
fi
121+
122+
# Set the version to use
123+
if [ -n "$CODACY_CLI_V2_VERSION" ]; then
124+
version="$CODACY_CLI_V2_VERSION"
125+
else
126+
version=$(get_version_from_yaml)
127+
fi
128+
129+
130+
# Set up version-specific paths
131+
bin_folder="${CODACY_CLI_V2_TMP_FOLDER}/${version}"
132+
133+
mkdir -p "$bin_folder"
134+
bin_path="$bin_folder"/"$bin_name"
135+
136+
# Download the tool if not already installed
137+
download_cli "$bin_folder" "$bin_path" "$version"
138+
chmod +x "$bin_path"
139+
140+
run_command="$bin_path"
141+
if [ -z "$run_command" ]; then
142+
fatal "Codacy cli v2 binary could not be found."
143+
fi
144+
145+
if [ "$#" -eq 1 ] && [ "$1" = "download" ]; then
146+
echo "Codacy cli v2 download succeeded"
147+
else
148+
eval "$run_command $*"
149+
fi

.codacy/codacy.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
runtimes:
2+
- dart@3.7.2
3+
- go@1.22.3
4+
- java@17.0.10
5+
- node@22.2.0
6+
- python@3.11.11
7+
tools:
8+
- dartanalyzer@3.7.2
9+
- eslint@8.57.0
10+
- lizard@1.17.31
11+
- pmd@7.11.0
12+
- pylint@3.3.6
13+
- revive@1.7.0
14+
- semgrep@1.78.0
15+
- trivy@0.66.0

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,7 @@ dist
113113
# .yarn meta
114114
.yarn
115115

116+
117+
118+
#Ignore cursor AI rules
119+
.cursor/rules/codacy.mdc

.vscode/settings.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
{ "pattern": "packages/*" }
44
],
55
"files.exclude": {
6-
"**/node_modules": true,
7-
"**/*dist*": true,
6+
// "**/node_modules": true,
7+
// "**/*dist*": true,
88
"**/*coverage*": true,
99
}
1010
}

README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ out of the box.
2929
### Installation
3030

3131
```bash
32-
npm install @concepta/rockets-server @concepta/nestjs-typeorm-ext typeorm
32+
npm install @concepta/rockets-server-auth @concepta/nestjs-typeorm-ext typeorm
3333
```
3434

3535
### Basic Setup
@@ -40,7 +40,7 @@ You'll need to create your entities and configure the module as follows:
4040
```typescript
4141
// app.module.ts
4242
import { Module } from '@nestjs/common';
43-
import { RocketsServerModule } from '@concepta/rockets-server';
43+
import { RocketsServerAuthModule } from '@concepta/rockets-server-auth';
4444
import { TypeOrmExtModule } from '@concepta/nestjs-typeorm-ext';
4545
import { UserEntity } from './entities/user.entity';
4646
import { UserOtpEntity } from './entities/user-otp.entity';
@@ -54,7 +54,7 @@ import { FederatedEntity } from './entities/federated.entity';
5454
synchronize: true,
5555
autoLoadEntities: true,
5656
}),
57-
RocketsServerModule.forRoot({
57+
RocketsServerAuthModule.forRoot({
5858
user: {
5959
imports: [
6060
TypeOrmExtModule.forFeature({
@@ -93,7 +93,7 @@ That's it! You now have:
9393

9494
For detailed setup, configuration, and API reference, see:
9595

96-
**[📚 Complete Documentation](./packages/rockets-server/README.md)**
96+
**[📚 Complete Documentation](./packages/rockets-server-auth/README.md)**
9797

9898
## 🔧 Dependencies
9999

@@ -114,3 +114,7 @@ finalized our Contributor License Agreement.
114114

115115
This project is licensed under the MIT License - see the
116116
[LICENSE.txt](LICENSE.txt) file for details.
117+
118+
Notes:
119+
Rockest server has a global server guard that uses auth provider
120+
rockets server auth can choose to use the gloal jwt one

0 commit comments

Comments
 (0)