Require PIN for browser if browser access restricted

This commit is contained in:
2024-05-07 21:25:45 -04:00
parent 64d65417fa
commit c6b6f560be
3 changed files with 49 additions and 0 deletions

View File

@@ -35,8 +35,26 @@ extern FS_Archive ArchiveSD;
extern FS_Archive ArchiveHomeExt; extern FS_Archive ArchiveHomeExt;
extern FS_Archive ArchiveThemeExt; extern FS_Archive ArchiveThemeExt;
typedef struct {
u32 enable : 1;
u32 browser: 1;
u32 stereoscopic : 1;
u32 media_share : 1;
u32 online : 1;
u32 streetpass : 1;
u32 friends : 1;
u32 dsdownload : 1;
u32 shopping : 1;
u32 videos : 1;
u32 miiverse : 1;
u32 post : 1;
u32 null : 19;
u32 coppa : 1;
} Parental_Restrictions_s;
Result open_archives(void); Result open_archives(void);
Result close_archives(void); Result close_archives(void);
Result load_parental_controls(Parental_Restrictions_s *restrictions);
u32 file_to_buf(FS_Path path, FS_Archive archive, char** buf); u32 file_to_buf(FS_Path path, FS_Archive archive, char** buf);
u32 zip_memory_to_buf(char *file_name, void * zip_memory, size_t zip_size, char ** buf); u32 zip_memory_to_buf(char *file_name, void * zip_memory, size_t zip_size, char ** buf);

View File

@@ -111,6 +111,17 @@ Result close_archives(void)
return 0; return 0;
} }
Result load_parental_controls(Parental_Restrictions_s *restrictions)
{
char parental_data[0xC0] = {0};
Result res;
if (R_FAILED(res = CFG_GetConfigInfoBlk8(0xC0, 0x000C0000, &parental_data))) return res;
memcpy(restrictions, parental_data, 4);
return 0;
}
u32 file_to_buf(FS_Path path, FS_Archive archive, char** buf) u32 file_to_buf(FS_Path path, FS_Archive archive, char** buf)
{ {
Handle file; Handle file;

View File

@@ -490,6 +490,26 @@ bool themeplaza_browser(EntryMode mode)
{ {
bool downloaded = false; bool downloaded = false;
Parental_Restrictions_s restrictions = {0};
Result res = load_parental_controls(&restrictions);
if (R_SUCCEEDED(res))
{
if (restrictions.enable && restrictions.browser)
{
SwkbdState swkbd;
char entered[5] = {0};
swkbdInit(&swkbd, SWKBD_TYPE_NUMPAD, 2, 4);
swkbdSetFeatures(&swkbd, SWKBD_PARENTAL);
swkbdInputText(&swkbd, entered, 5);
SwkbdResult swkbd_res = swkbdGetResult(&swkbd);
if (swkbd_res != SWKBD_PARENTAL_OK)
{
return downloaded;
}
}
}
bool preview_mode = false; bool preview_mode = false;
int preview_offset = 0; int preview_offset = 0;
audio_s * audio = NULL; audio_s * audio = NULL;