Files
andupetcu 196ca00194 Fix authentication state persistence and admin role display
- Implement complete authentication system with JWT token validation
- Add auth provider with persistent login state across page refreshes
- Create multilingual login/register forms with Material-UI components
- Fix token validation using raw SQL queries to bypass Prisma sync issues
- Add comprehensive error handling for expired/invalid tokens
- Create profile and settings pages with full i18n support
- Add proper user role management (admin/user) with database sync
- Implement secure middleware with CSRF protection and auth checks
- Add debug endpoints for troubleshooting authentication issues
- Fix Zustand store persistence for authentication state

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-21 01:06:30 +03:00

1517 lines
23 KiB
JSON

{
"file": "bibles/bible-bsb.md",
"totals": {
"versesTagged": 2030
},
"books": [
{
"name": "Genesis",
"testament": "OT",
"expectedChapters": 50,
"detectedChapters": [
1,
2,
3,
5,
6,
7,
9,
11,
12,
14,
15,
17,
18,
19,
21,
22,
23,
24,
25,
26,
28,
30,
31,
33,
35,
36,
37,
39,
41,
42,
44,
46,
48,
50
],
"detectedCount": 34,
"coverage": 68,
"verseMarkers": 81
},
{
"name": "Exodus",
"testament": "OT",
"expectedChapters": 40,
"detectedChapters": [
1,
2,
3,
4,
6,
8,
9,
10,
12,
13,
14,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40
],
"detectedCount": 36,
"coverage": 90,
"verseMarkers": 123
},
{
"name": "Leviticus",
"testament": "OT",
"expectedChapters": 27,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7,
8,
10,
11,
12,
13,
14,
15,
16,
18,
19,
20,
21,
23,
24,
25,
26,
27
],
"detectedCount": 24,
"coverage": 88.89,
"verseMarkers": 58
},
{
"name": "Numbers",
"testament": "OT",
"expectedChapters": 36,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
12,
13,
14,
15,
16,
18,
20,
21,
22,
23,
26,
27,
28,
29,
30,
31,
32,
34,
35,
36
],
"detectedCount": 30,
"coverage": 83.33,
"verseMarkers": 61
},
{
"name": "Deuteronomy",
"testament": "OT",
"expectedChapters": 34,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
14,
15,
16,
18,
19,
21,
23,
24,
25,
27,
30,
31,
32
],
"detectedCount": 25,
"coverage": 73.53,
"verseMarkers": 68
},
{
"name": "Joshua",
"testament": "OT",
"expectedChapters": 24,
"detectedChapters": [
1,
3,
6,
8,
9,
11,
13,
15,
18,
19,
21,
22,
24
],
"detectedCount": 13,
"coverage": 54.17,
"verseMarkers": 18
},
{
"name": "Judges",
"testament": "OT",
"expectedChapters": 21,
"detectedChapters": [
1,
2,
3,
5,
6,
8,
9,
11,
13,
14,
16,
18,
19,
20,
21
],
"detectedCount": 15,
"coverage": 71.43,
"verseMarkers": 19
},
{
"name": "Ruth",
"testament": "OT",
"expectedChapters": 4,
"detectedChapters": [
1,
4
],
"detectedCount": 2,
"coverage": 50,
"verseMarkers": 4
},
{
"name": "1 Samuel",
"testament": "OT",
"expectedChapters": 31,
"detectedChapters": [
1,
2,
3,
6,
8,
10,
13,
14,
15,
17,
18,
19,
20,
21,
22,
23,
25,
26,
28,
31
],
"detectedCount": 20,
"coverage": 64.52,
"verseMarkers": 32
},
{
"name": "2 Samuel",
"testament": "OT",
"expectedChapters": 24,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
21,
22,
23,
24
],
"detectedCount": 23,
"coverage": 95.83,
"verseMarkers": 42
},
{
"name": "1 Kings",
"testament": "OT",
"expectedChapters": 22,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
18,
19,
20,
21,
22
],
"detectedCount": 21,
"coverage": 95.45,
"verseMarkers": 65
},
{
"name": "2 Kings",
"testament": "OT",
"expectedChapters": 25,
"detectedChapters": [
1,
3,
4,
5,
6,
8,
9,
11,
12,
13,
14,
15,
16,
18,
19,
20,
21,
22,
23,
24,
25
],
"detectedCount": 21,
"coverage": 84,
"verseMarkers": 77
},
{
"name": "1 Chronicles",
"testament": "OT",
"expectedChapters": 29,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
24,
26,
28,
29
],
"detectedCount": 25,
"coverage": 86.21,
"verseMarkers": 48
},
{
"name": "2 Chronicles",
"testament": "OT",
"expectedChapters": 36,
"detectedChapters": [
1,
3,
4,
5,
6,
7,
8,
9,
10,
11,
14,
16,
17,
18,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36
],
"detectedCount": 30,
"coverage": 83.33,
"verseMarkers": 66
},
{
"name": "Ezra",
"testament": "OT",
"expectedChapters": 10,
"detectedChapters": [
1,
2,
4,
5,
6,
7,
8,
9,
10
],
"detectedCount": 9,
"coverage": 90,
"verseMarkers": 12
},
{
"name": "Nehemiah",
"testament": "OT",
"expectedChapters": 13,
"detectedChapters": [
4,
6,
7,
8,
9,
10,
12,
13
],
"detectedCount": 8,
"coverage": 61.54,
"verseMarkers": 12
},
{
"name": "Esther",
"testament": "OT",
"expectedChapters": 10,
"detectedChapters": [
2,
6,
9
],
"detectedCount": 3,
"coverage": 30,
"verseMarkers": 3
},
{
"name": "Job",
"testament": "OT",
"expectedChapters": 42,
"detectedChapters": [
1,
5,
8,
11,
14,
18,
21,
24,
28,
31,
33,
36,
38,
41
],
"detectedCount": 14,
"coverage": 33.33,
"verseMarkers": 18
},
{
"name": "Psalms",
"testament": "OT",
"expectedChapters": 150,
"detectedChapters": [
1,
2,
3,
5,
6,
8,
10,
11,
13,
14,
16,
18,
19,
21,
22,
23,
24,
25,
29,
31,
32,
33,
34,
36,
37,
38,
40,
41,
44,
45,
49,
51,
52,
53,
54,
57,
59,
62,
64,
66,
68,
69,
70,
72,
74,
75,
78,
79,
82,
83,
84,
88,
89,
91,
93,
94,
95,
96,
98,
99,
100,
102,
103,
104,
105,
106,
107,
108,
109,
110,
112,
113,
115,
116,
117,
118,
119,
127,
128,
135,
136,
137,
139,
140,
142,
144,
148,
149
],
"detectedCount": 88,
"coverage": 58.67,
"verseMarkers": 178
},
{
"name": "Proverbs",
"testament": "OT",
"expectedChapters": 31,
"detectedChapters": [
1,
3,
4,
5,
7,
10,
11,
12,
14,
16,
19,
21,
23,
25,
26,
27,
28,
30
],
"detectedCount": 18,
"coverage": 58.06,
"verseMarkers": 26
},
{
"name": "Ecclesiastes",
"testament": "OT",
"expectedChapters": 12,
"detectedChapters": [
5,
8,
11
],
"detectedCount": 3,
"coverage": 25,
"verseMarkers": 5
},
{
"name": "Song of Songs",
"testament": "OT",
"expectedChapters": 8,
"detectedChapters": [
1,
5,
8
],
"detectedCount": 3,
"coverage": 37.5,
"verseMarkers": 4
},
{
"name": "Isaiah",
"testament": "OT",
"expectedChapters": 66,
"detectedChapters": [
1,
2,
3,
5,
6,
7,
8,
9,
10,
11,
12,
14,
15,
16,
17,
21,
22,
23,
25,
26,
27,
28,
29,
30,
32,
34,
35,
37,
38,
40,
41,
42,
43,
44,
45,
48,
49,
50,
52,
53,
54,
56,
57,
59,
61,
63,
64,
65,
66
],
"detectedCount": 49,
"coverage": 74.24,
"verseMarkers": 137
},
{
"name": "Jeremiah",
"testament": "OT",
"expectedChapters": 52,
"detectedChapters": [
3,
4,
6,
7,
9,
10,
13,
14,
15,
17,
18,
19,
21,
23,
25,
26,
29,
30,
31,
32,
33,
35,
37,
39,
40,
41,
42,
44,
46,
48,
49,
50,
51,
52
],
"detectedCount": 34,
"coverage": 65.38,
"verseMarkers": 53
},
{
"name": "Lamentations",
"testament": "OT",
"expectedChapters": 5,
"detectedChapters": [
2,
3,
5
],
"detectedCount": 3,
"coverage": 60,
"verseMarkers": 3
},
{
"name": "Ezekiel",
"testament": "OT",
"expectedChapters": 48,
"detectedChapters": [
1,
3,
6,
8,
11,
13,
14,
16,
17,
19,
20,
22,
23,
26,
28,
29,
32,
33,
34,
35,
36,
37,
39,
40,
42,
44,
45,
46,
48
],
"detectedCount": 29,
"coverage": 60.42,
"verseMarkers": 40
},
{
"name": "Daniel",
"testament": "OT",
"expectedChapters": 12,
"detectedChapters": [
3,
4,
6,
7,
9,
11,
12
],
"detectedCount": 7,
"coverage": 58.33,
"verseMarkers": 10
},
{
"name": "Hosea",
"testament": "OT",
"expectedChapters": 14,
"detectedChapters": [
1,
2,
3,
4,
6,
9,
10,
11,
13
],
"detectedCount": 9,
"coverage": 64.29,
"verseMarkers": 16
},
{
"name": "Joel",
"testament": "OT",
"expectedChapters": 3,
"detectedChapters": [
1,
2,
3
],
"detectedCount": 3,
"coverage": 100,
"verseMarkers": 6
},
{
"name": "Amos",
"testament": "OT",
"expectedChapters": 9,
"detectedChapters": [
1,
4,
5,
6,
7,
9
],
"detectedCount": 6,
"coverage": 66.67,
"verseMarkers": 10
},
{
"name": "Obadiah",
"testament": "OT",
"expectedChapters": 1,
"detectedChapters": [
1
],
"detectedCount": 1,
"coverage": 100,
"verseMarkers": 2
},
{
"name": "Jonah",
"testament": "OT",
"expectedChapters": 4,
"detectedChapters": [
1,
3,
4
],
"detectedCount": 3,
"coverage": 75,
"verseMarkers": 5
},
{
"name": "Micah",
"testament": "OT",
"expectedChapters": 7,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7
],
"detectedCount": 7,
"coverage": 100,
"verseMarkers": 15
},
{
"name": "Nahum",
"testament": "OT",
"expectedChapters": 3,
"detectedChapters": [
1,
3
],
"detectedCount": 2,
"coverage": 66.67,
"verseMarkers": 2
},
{
"name": "Habakkuk",
"testament": "OT",
"expectedChapters": 3,
"detectedChapters": [
1,
2,
3
],
"detectedCount": 3,
"coverage": 100,
"verseMarkers": 6
},
{
"name": "Zephaniah",
"testament": "OT",
"expectedChapters": 3,
"detectedChapters": [
1,
2
],
"detectedCount": 2,
"coverage": 66.67,
"verseMarkers": 3
},
{
"name": "Haggai",
"testament": "OT",
"expectedChapters": 2,
"detectedChapters": [
1,
2
],
"detectedCount": 2,
"coverage": 100,
"verseMarkers": 2
},
{
"name": "Zechariah",
"testament": "OT",
"expectedChapters": 14,
"detectedChapters": [
2,
6,
8,
9,
11,
12,
13,
14
],
"detectedCount": 8,
"coverage": 57.14,
"verseMarkers": 17
},
{
"name": "Malachi",
"testament": "OT",
"expectedChapters": 4,
"detectedChapters": [
1,
3,
4
],
"detectedCount": 3,
"coverage": 75,
"verseMarkers": 9
},
{
"name": "Matthew",
"testament": "NT",
"expectedChapters": 28,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28
],
"detectedCount": 28,
"coverage": 100,
"verseMarkers": 207
},
{
"name": "Mark",
"testament": "NT",
"expectedChapters": 16,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"detectedCount": 16,
"coverage": 100,
"verseMarkers": 99
},
{
"name": "Luke",
"testament": "NT",
"expectedChapters": 24,
"detectedChapters": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24
],
"detectedCount": 24,
"coverage": 100,
"verseMarkers": 78
},
{
"name": "John",
"testament": "NT",
"expectedChapters": 21,
"detectedChapters": [
1,
2,
3,
4,
5,
7,
8,
9,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
],
"detectedCount": 19,
"coverage": 90.48,
"verseMarkers": 37
},
{
"name": "Acts",
"testament": "NT",
"expectedChapters": 28,
"detectedChapters": [
1,
2,
3,
4,
6,
7,
8,
9,
10,
11,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
25,
27,
28
],
"detectedCount": 24,
"coverage": 85.71,
"verseMarkers": 58
},
{
"name": "Romans",
"testament": "NT",
"expectedChapters": 16,
"detectedChapters": [
2,
3,
4,
5,
6,
7,
8,
10,
11,
12,
13,
14,
15,
16
],
"detectedCount": 14,
"coverage": 87.5,
"verseMarkers": 35
},
{
"name": "1 Corinthians",
"testament": "NT",
"expectedChapters": 16,
"detectedChapters": [
1,
2,
3,
7,
9,
10,
12,
14,
16
],
"detectedCount": 9,
"coverage": 56.25,
"verseMarkers": 20
},
{
"name": "2 Corinthians",
"testament": "NT",
"expectedChapters": 13,
"detectedChapters": [
3,
5,
8,
9,
11,
12
],
"detectedCount": 6,
"coverage": 46.15,
"verseMarkers": 9
},
{
"name": "Galatians",
"testament": "NT",
"expectedChapters": 6,
"detectedChapters": [
3,
4,
5,
6
],
"detectedCount": 4,
"coverage": 66.67,
"verseMarkers": 5
},
{
"name": "Ephesians",
"testament": "NT",
"expectedChapters": 6,
"detectedChapters": [
1,
2,
4,
5,
6
],
"detectedCount": 5,
"coverage": 83.33,
"verseMarkers": 15
},
{
"name": "Philippians",
"testament": "NT",
"expectedChapters": 4,
"detectedChapters": [
1,
2,
3,
4
],
"detectedCount": 4,
"coverage": 100,
"verseMarkers": 12
},
{
"name": "Colossians",
"testament": "NT",
"expectedChapters": 4,
"detectedChapters": [
1,
2,
3,
4
],
"detectedCount": 4,
"coverage": 100,
"verseMarkers": 11
},
{
"name": "1 Thessalonians",
"testament": "NT",
"expectedChapters": 5,
"detectedChapters": [
1,
4
],
"detectedCount": 2,
"coverage": 40,
"verseMarkers": 2
},
{
"name": "2 Thessalonians",
"testament": "NT",
"expectedChapters": 3,
"detectedChapters": [
1
],
"detectedCount": 1,
"coverage": 33.33,
"verseMarkers": 1
},
{
"name": "1 Timothy",
"testament": "NT",
"expectedChapters": 6,
"detectedChapters": [
1,
3,
5,
6
],
"detectedCount": 4,
"coverage": 66.67,
"verseMarkers": 8
},
{
"name": "2 Timothy",
"testament": "NT",
"expectedChapters": 4,
"detectedChapters": [
1,
2,
3,
4
],
"detectedCount": 4,
"coverage": 100,
"verseMarkers": 5
},
{
"name": "Titus",
"testament": "NT",
"expectedChapters": 3,
"detectedChapters": [
1,
3
],
"detectedCount": 2,
"coverage": 66.67,
"verseMarkers": 5
},
{
"name": "Philemon",
"testament": "NT",
"expectedChapters": 1,
"detectedChapters": [
1
],
"detectedCount": 1,
"coverage": 100,
"verseMarkers": 0
},
{
"name": "Hebrews",
"testament": "NT",
"expectedChapters": 13,
"detectedChapters": [
1,
3,
4,
5,
7,
8,
10,
11,
12
],
"detectedCount": 9,
"coverage": 69.23,
"verseMarkers": 18
},
{
"name": "James",
"testament": "NT",
"expectedChapters": 5,
"detectedChapters": [
1,
2,
3,
5
],
"detectedCount": 4,
"coverage": 80,
"verseMarkers": 6
},
{
"name": "1 Peter",
"testament": "NT",
"expectedChapters": 5,
"detectedChapters": [
1,
2,
3,
4,
5
],
"detectedCount": 5,
"coverage": 100,
"verseMarkers": 8
},
{
"name": "2 Peter",
"testament": "NT",
"expectedChapters": 3,
"detectedChapters": [
1,
3
],
"detectedCount": 2,
"coverage": 66.67,
"verseMarkers": 3
},
{
"name": "1 John",
"testament": "NT",
"expectedChapters": 5,
"detectedChapters": [
1,
3,
5
],
"detectedCount": 3,
"coverage": 60,
"verseMarkers": 3
},
{
"name": "2 John",
"testament": "NT",
"expectedChapters": 1,
"detectedChapters": [
1
],
"detectedCount": 1,
"coverage": 100,
"verseMarkers": 3
},
{
"name": "3 John",
"testament": "NT",
"expectedChapters": 1,
"detectedChapters": [
1,
13,
20
],
"detectedCount": 3,
"coverage": 300,
"verseMarkers": 4
},
{
"name": "Jude",
"testament": "NT",
"expectedChapters": 1,
"detectedChapters": [
1
],
"detectedCount": 1,
"coverage": 100,
"verseMarkers": 5
},
{
"name": "Revelation",
"testament": "NT",
"expectedChapters": 22,
"detectedChapters": [
1,
2,
3,
4,
7,
10,
11,
13,
15,
17,
18,
19,
21,
22
],
"detectedCount": 14,
"coverage": 63.64,
"verseMarkers": 17
}
]
}