Add: Admin login for n-ice/btpro
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
namespace citymania {
|
namespace citymania {
|
||||||
|
|
||||||
bool _novahost = true;
|
bool _novahost = true;
|
||||||
|
bool _admin = false;
|
||||||
IniFile *_inilogin = NULL;
|
IniFile *_inilogin = NULL;
|
||||||
|
|
||||||
static const int HTTPBUFLEN = 1024;
|
static const int HTTPBUFLEN = 1024;
|
||||||
@@ -58,6 +59,10 @@ static const char * const NICE_LOGIN = "nice_login";
|
|||||||
static const char * const NICE_PW = "nice_pw";
|
static const char * const NICE_PW = "nice_pw";
|
||||||
static const char * const BTPRO_LOGIN = "btpro_login";
|
static const char * const BTPRO_LOGIN = "btpro_login";
|
||||||
static const char * const BTPRO_PW = "btpro_pw";
|
static const char * const BTPRO_PW = "btpro_pw";
|
||||||
|
static const char * const NICE_ADMIN_PW = "nice_admin_pw";
|
||||||
|
static const char * const BTPRO_ADMIN_PW = "btpro_admin_pw";
|
||||||
|
static const char * const ADMIN = "admin";
|
||||||
|
|
||||||
static const char * const COMMUNITY = "community";
|
static const char * const COMMUNITY = "community";
|
||||||
|
|
||||||
static const char * const INI_LOGIN_KEYS[] = {
|
static const char * const INI_LOGIN_KEYS[] = {
|
||||||
@@ -67,6 +72,9 @@ static const char * const INI_LOGIN_KEYS[] = {
|
|||||||
NICE_PW,
|
NICE_PW,
|
||||||
BTPRO_LOGIN,
|
BTPRO_LOGIN,
|
||||||
BTPRO_PW,
|
BTPRO_PW,
|
||||||
|
NICE_ADMIN_PW,
|
||||||
|
BTPRO_ADMIN_PW,
|
||||||
|
ADMIN,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -146,8 +154,11 @@ enum CommandsToolbarCargoOption {
|
|||||||
enum LoginWindowWidgets {
|
enum LoginWindowWidgets {
|
||||||
LWW_USER_NAME,
|
LWW_USER_NAME,
|
||||||
LWW_USER_PW,
|
LWW_USER_PW,
|
||||||
|
LWW_ADMIN_PW,
|
||||||
LWW_USER_LOGIN,
|
LWW_USER_LOGIN,
|
||||||
LWW_USER_LOGOUT,
|
LWW_USER_LOGOUT,
|
||||||
|
LWW_ADMIN_LOGIN,
|
||||||
|
LWW_ADMIN_LOGOUT,
|
||||||
LWW_COMMUNITY,
|
LWW_COMMUNITY,
|
||||||
LWW_USERNAME,
|
LWW_USERNAME,
|
||||||
LWW_PASSWORD,
|
LWW_PASSWORD,
|
||||||
@@ -156,8 +167,7 @@ enum LoginWindowWidgets {
|
|||||||
enum LoginWindowQueryWidgets {
|
enum LoginWindowQueryWidgets {
|
||||||
LQW_USER_NAME,
|
LQW_USER_NAME,
|
||||||
LQW_USER_PW,
|
LQW_USER_PW,
|
||||||
LQW_USER_LOGIN,
|
LQW_ADMIN_PW
|
||||||
LSQ_USER_LOGOUT,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum CommunityName {
|
enum CommunityName {
|
||||||
@@ -173,9 +183,12 @@ enum IniLoginKeys {
|
|||||||
NICEPW,
|
NICEPW,
|
||||||
BTPROUSER,
|
BTPROUSER,
|
||||||
BTPROPW,
|
BTPROPW,
|
||||||
|
NICEADMINPW,
|
||||||
|
BTPROADMINPW,
|
||||||
|
IS_ADMIN,
|
||||||
};
|
};
|
||||||
|
|
||||||
char _inilogindata[6][MAX_COMMUNITY_STRING_LEN];
|
char _inilogindata[9][MAX_COMMUNITY_STRING_LEN];
|
||||||
|
|
||||||
void AccountLogin(CommunityName community);
|
void AccountLogin(CommunityName community);
|
||||||
void IniReloadLogin();
|
void IniReloadLogin();
|
||||||
@@ -212,8 +225,13 @@ bool novahost() {
|
|||||||
void IniLoginInitiate(){
|
void IniLoginInitiate(){
|
||||||
if(_inilogin != NULL) return; //it was already set
|
if(_inilogin != NULL) return; //it was already set
|
||||||
_inilogin = new IniFile({CFG_LOGIN_KEY});
|
_inilogin = new IniFile({CFG_LOGIN_KEY});
|
||||||
_inilogin->LoadFromDisk(CFG_FILE, BASE_DIR);
|
_inilogin->LoadFromDisk(CFG_FILE, BASE_DIR);
|
||||||
IniReloadLogin();
|
try {
|
||||||
|
IniReloadLogin();
|
||||||
|
}
|
||||||
|
catch (...){
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetLoginItem(const std::string& itemname){
|
std::string GetLoginItem(const std::string& itemname){
|
||||||
@@ -251,7 +269,7 @@ void SetServerItem(const std::string &itemname, const std::string &value) {
|
|||||||
IniItem &item = group.GetOrCreateItem(itemname);
|
IniItem &item = group.GetOrCreateItem(itemname);
|
||||||
item.SetValue(value);
|
item.SetValue(value);
|
||||||
_inilogin->SaveToDisk(fmt::format("{}{}", _personal_dir, CFG_FILE));
|
_inilogin->SaveToDisk(fmt::format("{}{}", _personal_dir, CFG_FILE));
|
||||||
IniReloadLogin();
|
//IniReloadLogin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -683,9 +701,7 @@ void AccountLogin(CommunityName community){
|
|||||||
uri = fmt::format(NICE_HTTP_LOGIN, GetLoginItem(NICE_LOGIN), GetLoginItem(NICE_PW));
|
uri = fmt::format(NICE_HTTP_LOGIN, GetLoginItem(NICE_LOGIN), GetLoginItem(NICE_PW));
|
||||||
break;
|
break;
|
||||||
case BTPRO: {
|
case BTPRO: {
|
||||||
uri = fmt::format(BTPRO_HTTP_LOGIN,
|
uri = fmt::format(BTPRO_HTTP_LOGIN, btpro_encode(GetLoginItem(BTPRO_LOGIN).c_str()),btpro_encode(GetLoginItem(BTPRO_PW).c_str()));
|
||||||
btpro_encode(GetLoginItem(BTPRO_LOGIN).c_str()),
|
|
||||||
btpro_encode(GetLoginItem(BTPRO_PW).c_str()));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -711,6 +727,13 @@ struct LoginWindow : Window {
|
|||||||
// this->DisableWidget(LWW_BTPRO);
|
// this->DisableWidget(LWW_BTPRO);
|
||||||
// }
|
// }
|
||||||
// if(!_novahost || !_networking) this->DisableWidget(LWW_NOVAPOLIS);
|
// if(!_novahost || !_networking) this->DisableWidget(LWW_NOVAPOLIS);
|
||||||
|
|
||||||
|
//no need for citymania
|
||||||
|
if (_community == 3) {
|
||||||
|
this->DisableWidget(LWW_ADMIN_LOGIN);
|
||||||
|
this->DisableWidget(LWW_ADMIN_LOGOUT);
|
||||||
|
this->DisableWidget(LWW_ADMIN_PW);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetStringParameters(int widget) const override
|
void SetStringParameters(int widget) const override
|
||||||
@@ -732,6 +755,15 @@ struct LoginWindow : Window {
|
|||||||
case 2: SetDParam(0, (GetLoginItem(BTPRO_PW).empty() ? CM_STR_LOGIN_WINDOW_NOT_SET : CM_STR_LOGIN_WINDOW_SET)); break;
|
case 2: SetDParam(0, (GetLoginItem(BTPRO_PW).empty() ? CM_STR_LOGIN_WINDOW_NOT_SET : CM_STR_LOGIN_WINDOW_SET)); break;
|
||||||
case 3: SetDParam(0, (GetLoginItem(NOVAPOLIS_PW).empty() ? CM_STR_LOGIN_WINDOW_NOT_SET : CM_STR_LOGIN_WINDOW_SET)); break;
|
case 3: SetDParam(0, (GetLoginItem(NOVAPOLIS_PW).empty() ? CM_STR_LOGIN_WINDOW_NOT_SET : CM_STR_LOGIN_WINDOW_SET)); break;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//admin password
|
||||||
|
case LWW_ADMIN_PW: {
|
||||||
|
switch (_community) {
|
||||||
|
case 1: SetDParam(0, (GetLoginItem(NICE_ADMIN_PW).empty() ? CM_STR_LOGIN_WINDOW_NOT_SET : CM_STR_LOGIN_WINDOW_SET)); break;
|
||||||
|
case 2: SetDParam(0, (GetLoginItem(BTPRO_ADMIN_PW).empty() ? CM_STR_LOGIN_WINDOW_NOT_SET : CM_STR_LOGIN_WINDOW_SET)); break;
|
||||||
|
//case 3: SetDParam(0, (GetLoginItem(NOVAPOLIS_PW).empty() ? CM_STR_LOGIN_WINDOW_NOT_SET : CM_STR_LOGIN_WINDOW_SET)); break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//community name
|
//community name
|
||||||
@@ -758,6 +790,10 @@ struct LoginWindow : Window {
|
|||||||
this->query_widget = (LoginWindowQueryWidgets)widget;
|
this->query_widget = (LoginWindowQueryWidgets)widget;
|
||||||
ShowQueryString(STR_EMPTY, CM_STR_LOGIN_WINDOW_CHANGE_PASSWORD, MAX_COMMUNITY_STRING_LEN, this, CS_ALPHANUMERAL, QSF_NONE);
|
ShowQueryString(STR_EMPTY, CM_STR_LOGIN_WINDOW_CHANGE_PASSWORD, MAX_COMMUNITY_STRING_LEN, this, CS_ALPHANUMERAL, QSF_NONE);
|
||||||
break;
|
break;
|
||||||
|
case LWW_ADMIN_PW:
|
||||||
|
this->query_widget = (LoginWindowQueryWidgets)widget;
|
||||||
|
ShowQueryString(STR_EMPTY, CM_STR_LOGIN_WINDOW_CHANGE_PASSWORD, MAX_COMMUNITY_STRING_LEN, this, CS_ALPHANUMERAL, QSF_NONE);
|
||||||
|
break;
|
||||||
case LWW_USER_LOGIN: {
|
case LWW_USER_LOGIN: {
|
||||||
switch (_community) {
|
switch (_community) {
|
||||||
case 1: if(_networking) AccountLogin(NICE); break;
|
case 1: if(_networking) AccountLogin(NICE); break;
|
||||||
@@ -765,9 +801,25 @@ struct LoginWindow : Window {
|
|||||||
case 3: if(/*_novahost && */_networking) AccountLogin(CITYMANIA); break;
|
case 3: if(/*_novahost && */_networking) AccountLogin(CITYMANIA); break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case LWW_USER_LOGOUT:
|
case LWW_USER_LOGOUT:
|
||||||
NetworkClientSendChatToServer("!logout"); break;
|
NetworkClientSendChatToServer("!logout"); break;
|
||||||
|
case LWW_ADMIN_LOGIN: {
|
||||||
|
switch (_community) {
|
||||||
|
case 1: {
|
||||||
|
if(_networking) NetworkClientSendChatToServer(fmt::format("!alogin {} {}", _inilogindata[NICEUSER], base64_decode(_inilogindata[NICEADMINPW])));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2: {
|
||||||
|
if(_networking) NetworkClientSendChatToServer(fmt::format("!alogin {} {}", _inilogindata[BTPROUSER], base64_decode(_inilogindata[BTPROADMINPW])));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//case 3: if(/*_novahost && */_networking) AccountLogin(CITYMANIA); break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
case LWW_ADMIN_LOGOUT:
|
||||||
|
NetworkClientSendChatToServer("!alogout"); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -805,6 +857,14 @@ struct LoginWindow : Window {
|
|||||||
case 2: SetLoginItem(BTPRO_PW, str); break;
|
case 2: SetLoginItem(BTPRO_PW, str); break;
|
||||||
case 3: SetLoginItem(NOVAPOLIS_PW, str); break;
|
case 3: SetLoginItem(NOVAPOLIS_PW, str); break;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LQW_ADMIN_PW: {
|
||||||
|
switch (_community) {
|
||||||
|
case 1: SetLoginItem(NICE_ADMIN_PW, base64_encode((const unsigned char *)str, strlen(str))); break;
|
||||||
|
case 2: SetLoginItem(BTPRO_ADMIN_PW, base64_encode((const unsigned char *)str, strlen(str))); break;
|
||||||
|
//case 3: SetLoginItem(NOVAPOLIS_PW, str); break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: return;
|
default: return;
|
||||||
@@ -823,11 +883,11 @@ static const NWidgetPart _nested_login_window_widgets[] = {
|
|||||||
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPadding(10),
|
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPadding(10),
|
||||||
//welcome
|
//welcome
|
||||||
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
|
||||||
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_COMMUNITY), SetMinimalSize(160, 20), SetAlignment(SA_CENTER), SetDataTip(CM_STR_LOGIN_WINDOW_WELCOME, 0), SetFill(1, 1),
|
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_COMMUNITY), SetMinimalSize(100, 20), SetAlignment(SA_CENTER), SetDataTip(CM_STR_LOGIN_WINDOW_WELCOME, 0), SetFill(1, 1),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
NWidget(NWID_SPACER), SetMinimalSize(0, 10),
|
NWidget(NWID_SPACER), SetMinimalSize(0, 10),
|
||||||
//username and pw
|
//username and pw
|
||||||
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
|
NWidget(NWID_HORIZONTAL),
|
||||||
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_USERNAME), SetDataTip(CM_STR_LOGIN_WINDOW_USERNAME, 0),
|
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_USERNAME), SetDataTip(CM_STR_LOGIN_WINDOW_USERNAME, 0),
|
||||||
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
@@ -836,7 +896,7 @@ static const NWidgetPart _nested_login_window_widgets[] = {
|
|||||||
NWidget(NWID_SPACER), SetMinimalSize(20, 0),
|
NWidget(NWID_SPACER), SetMinimalSize(20, 0),
|
||||||
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_PASSWORD), SetDataTip(CM_STR_LOGIN_WINDOW_PASSWORD, 0),
|
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_PASSWORD), SetDataTip(CM_STR_LOGIN_WINDOW_PASSWORD, 0),
|
||||||
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, LWW_USER_PW), SetMinimalSize(30, 15), SetFill(1, 1),
|
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, LWW_USER_PW), SetMinimalSize(50, 15), SetFill(1, 1),
|
||||||
SetDataTip(CM_STR_LOGIN_WINDOW_PASSWORD_DISPLAY, CM_STR_LOGIN_WINDOW_CHANGE_PASSWORD_HELPTEXT),
|
SetDataTip(CM_STR_LOGIN_WINDOW_PASSWORD_DISPLAY, CM_STR_LOGIN_WINDOW_CHANGE_PASSWORD_HELPTEXT),
|
||||||
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
@@ -844,10 +904,10 @@ static const NWidgetPart _nested_login_window_widgets[] = {
|
|||||||
//login and logout
|
//login and logout
|
||||||
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
|
||||||
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, LWW_USER_LOGIN), SetMinimalSize(50, 30), SetAlignment(SA_CENTER), SetFill(1, 1),
|
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, LWW_USER_LOGIN), SetMinimalSize(40, 30), SetAlignment(SA_CENTER), SetFill(1, 1),
|
||||||
SetDataTip(CM_STR_TOOLBAR_COMMANDS_LOGIN_CAPTION, CM_STR_TOOLBAR_COMMANDS_LOGIN_TOOLTIP),
|
SetDataTip(CM_STR_TOOLBAR_COMMANDS_LOGIN_CAPTION, CM_STR_TOOLBAR_COMMANDS_LOGIN_TOOLTIP),
|
||||||
NWidget(NWID_SPACER), SetMinimalSize(10, 0),
|
NWidget(NWID_SPACER), SetMinimalSize(10, 0),
|
||||||
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, LWW_USER_LOGOUT), SetMinimalSize(50, 30), SetAlignment(SA_CENTER), SetFill(1, 1),
|
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, LWW_USER_LOGOUT), SetMinimalSize(40, 30), SetAlignment(SA_CENTER), SetFill(1, 1),
|
||||||
SetDataTip(CM_STR_TOOLBAR_COMMANDS_LOGOUT_CAPTION, CM_STR_TOOLBAR_COMMANDS_LOGOUT_TOOLTIP),
|
SetDataTip(CM_STR_TOOLBAR_COMMANDS_LOGOUT_CAPTION, CM_STR_TOOLBAR_COMMANDS_LOGOUT_TOOLTIP),
|
||||||
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
@@ -856,20 +916,66 @@ static const NWidgetPart _nested_login_window_widgets[] = {
|
|||||||
EndContainer(),
|
EndContainer(),
|
||||||
};
|
};
|
||||||
|
|
||||||
static WindowDesc _login_window_desc(__FILE__, __LINE__,
|
static const NWidgetPart _nested_admin_window_widgets[] = {
|
||||||
WDP_CENTER, "cm_login", 0, 0,
|
NWidget(NWID_HORIZONTAL),
|
||||||
CM_WC_LOGIN_WINDOW, WC_NONE,
|
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
|
||||||
WDF_CONSTRUCTION,
|
NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(CM_STR_LOGIN_WINDOW_CAPTION, 0),
|
||||||
std::begin(_nested_login_window_widgets), std::end(_nested_login_window_widgets)
|
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
||||||
);
|
EndContainer(),
|
||||||
|
NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0),
|
||||||
void ShowLoginWindow() {
|
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPadding(10),
|
||||||
IniLoginInitiate();
|
//welcome
|
||||||
CheckCommunity();
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
|
||||||
CloseWindowByClass(CM_WC_LOGIN_WINDOW);
|
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_COMMUNITY), SetMinimalSize(100, 20), SetAlignment(SA_CENTER), SetDataTip(CM_STR_LOGIN_WINDOW_WELCOME, 0), SetFill(1, 1),
|
||||||
AllocateWindowDescFront<LoginWindow>(&_login_window_desc, 0);
|
EndContainer(),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(0, 10),
|
||||||
|
//username and pw
|
||||||
|
NWidget(NWID_HORIZONTAL),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
|
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_USERNAME), SetDataTip(CM_STR_LOGIN_WINDOW_USERNAME, 0),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, LWW_USER_NAME), SetMinimalSize(100, 15), SetFill(1, 1),
|
||||||
|
SetDataTip(CM_STR_LOGIN_WINDOW_USERNAME_DISPLAY, CM_STR_LOGIN_WINDOW_CHANGE_USERNAME_HELPTEXT),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(20, 0),
|
||||||
|
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_PASSWORD), SetDataTip(CM_STR_LOGIN_WINDOW_PASSWORD, 0),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, LWW_USER_PW), SetMinimalSize(50, 15), SetFill(1, 1),
|
||||||
|
SetDataTip(CM_STR_LOGIN_WINDOW_PASSWORD_DISPLAY, CM_STR_LOGIN_WINDOW_CHANGE_PASSWORD_HELPTEXT),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(20, 0),
|
||||||
|
NWidget(WWT_TEXT, COLOUR_BROWN, LWW_ADMIN_PW), SetDataTip(CM_STR_LOGIN_WINDOW_ADMIN_PASSWORD, 0),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, LWW_ADMIN_PW), SetMinimalSize(50, 15), SetFill(1, 1),
|
||||||
|
SetDataTip(CM_STR_LOGIN_WINDOW_PASSWORD_DISPLAY, CM_STR_LOGIN_WINDOW_CHANGE_PASSWORD_HELPTEXT),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(0, 20),
|
||||||
|
//login and logout
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, LWW_USER_LOGIN), SetMinimalSize(40, 30), SetAlignment(SA_CENTER), SetFill(1, 1),
|
||||||
|
SetDataTip(CM_STR_TOOLBAR_COMMANDS_LOGIN_CAPTION, CM_STR_TOOLBAR_COMMANDS_LOGIN_TOOLTIP),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(10, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, LWW_USER_LOGOUT), SetMinimalSize(40, 30), SetAlignment(SA_CENTER), SetFill(1, 1),
|
||||||
|
SetDataTip(CM_STR_TOOLBAR_COMMANDS_LOGOUT_CAPTION, CM_STR_TOOLBAR_COMMANDS_LOGOUT_TOOLTIP),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(10, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, LWW_ADMIN_LOGIN), SetMinimalSize(40, 30), SetAlignment(SA_CENTER), SetFill(1, 1),
|
||||||
|
SetDataTip(CM_STR_LOGIN_WINDOW_ADMIN_LOGIN, CM_STR_TOOLBAR_COMMANDS_LOGIN_TOOLTIP),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(10, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, LWW_ADMIN_LOGOUT), SetMinimalSize(40, 30), SetAlignment(SA_CENTER), SetFill(1, 1),
|
||||||
|
SetDataTip(CM_STR_LOGIN_WINDOW_ADMIN_LOGOUT, CM_STR_TOOLBAR_COMMANDS_LOGOUT_TOOLTIP),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(0, 10),
|
||||||
|
EndContainer(),
|
||||||
|
EndContainer(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Identify the current community */
|
/* Identify the current community */
|
||||||
void CheckCommunity() {
|
void CheckCommunity() {
|
||||||
if (_network_server_name.find("n-ice.org") != std::string::npos) {
|
if (_network_server_name.find("n-ice.org") != std::string::npos) {
|
||||||
@@ -888,8 +994,7 @@ void CheckCommunity() {
|
|||||||
SetServerItem(COMMUNITY, "3");
|
SetServerItem(COMMUNITY, "3");
|
||||||
// GetCommunityServerListText();
|
// GetCommunityServerListText();
|
||||||
}
|
}
|
||||||
} else if (_network_server_name.find("reddit.com") !=
|
} else if (_network_server_name.find("reddit.com") != std::string::npos) {
|
||||||
std::string::npos) {
|
|
||||||
if (GetServerItem(COMMUNITY) != "4") {
|
if (GetServerItem(COMMUNITY) != "4") {
|
||||||
SetServerItem(COMMUNITY, "4");
|
SetServerItem(COMMUNITY, "4");
|
||||||
// GetCommunityServerListText();
|
// GetCommunityServerListText();
|
||||||
@@ -899,5 +1004,34 @@ void CheckCommunity() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void CheckAdmin(){
|
||||||
|
|
||||||
|
if (GetLoginItem(ADMIN) == "1")
|
||||||
|
_admin = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static WindowDesc _login_window_desc(__FILE__, __LINE__,
|
||||||
|
WDP_CENTER, "cm_login", 0, 0,
|
||||||
|
CM_WC_LOGIN_WINDOW, WC_NONE,
|
||||||
|
WDF_CONSTRUCTION,
|
||||||
|
std::begin(_nested_login_window_widgets), std::end(_nested_login_window_widgets)
|
||||||
|
);
|
||||||
|
|
||||||
|
static WindowDesc _admin_window_desc(__FILE__, __LINE__,
|
||||||
|
WDP_CENTER, "cm_login", 0, 0,
|
||||||
|
CM_WC_LOGIN_WINDOW, WC_NONE,
|
||||||
|
WDF_CONSTRUCTION,
|
||||||
|
std::begin(_nested_admin_window_widgets), std::end(_nested_admin_window_widgets)
|
||||||
|
);
|
||||||
|
|
||||||
|
void ShowLoginWindow() {
|
||||||
|
IniLoginInitiate();
|
||||||
|
CheckCommunity();
|
||||||
|
CheckAdmin();
|
||||||
|
CloseWindowByClass(CM_WC_LOGIN_WINDOW);
|
||||||
|
if (!_admin) AllocateWindowDescFront<LoginWindow>(&_login_window_desc, 0);
|
||||||
|
else AllocateWindowDescFront<LoginWindow>(&_admin_window_desc, 0);
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace citymania
|
} // namespace citymania
|
||||||
|
|||||||
@@ -6200,6 +6200,9 @@ CM_STR_LOGIN_ERROR_SIGN_IN_FAILED :{WHITE}Failed t
|
|||||||
CM_STR_LOGIN_ERROR_BAD_INPUT :{WHITE}Bad username or password
|
CM_STR_LOGIN_ERROR_BAD_INPUT :{WHITE}Bad username or password
|
||||||
CM_STR_LOGIN_WINDOW_USERNAME :{WHITE}Username:
|
CM_STR_LOGIN_WINDOW_USERNAME :{WHITE}Username:
|
||||||
CM_STR_LOGIN_WINDOW_PASSWORD :{WHITE}Password:
|
CM_STR_LOGIN_WINDOW_PASSWORD :{WHITE}Password:
|
||||||
|
CM_STR_LOGIN_WINDOW_ADMIN_LOGIN :{BLACK}A-Login
|
||||||
|
CM_STR_LOGIN_WINDOW_ADMIN_LOGOUT :{BLACK}A-Logout
|
||||||
|
CM_STR_LOGIN_WINDOW_ADMIN_PASSWORD :{WHITE}Admin:
|
||||||
CM_STR_LOGIN_WINDOW_SET :{WHITE}Set
|
CM_STR_LOGIN_WINDOW_SET :{WHITE}Set
|
||||||
CM_STR_LOGIN_WINDOW_NOT_SET :{WHITE}Not Set
|
CM_STR_LOGIN_WINDOW_NOT_SET :{WHITE}Not Set
|
||||||
CM_STR_LOGIN_WINDOW_CHANGE_USERNAME :{WHITE}Change username
|
CM_STR_LOGIN_WINDOW_CHANGE_USERNAME :{WHITE}Change username
|
||||||
|
|||||||
Reference in New Issue
Block a user