|
|
@@ -92,6 +92,64 @@ static web_handle_t webHandle;
|
|
|
static int webSetCallback(void);
|
|
|
|
|
|
///////////////////////////////////////////////////
|
|
|
+static char* getUserNamebyToken(char* Token)
|
|
|
+{
|
|
|
+ char* userName = NULL;
|
|
|
+
|
|
|
+ if (Token==NULL)
|
|
|
+ {
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ lock_s_hold(LOCK_ID_USER_LOGIN);
|
|
|
+ _User_Log *_UserInfoTemp = NULL;
|
|
|
+ list_for_each_entry(_UserInfoTemp, &_GlobalUserLoginInfo.list, list)
|
|
|
+ {
|
|
|
+ if (_UserInfoTemp == NULL)
|
|
|
+ break;
|
|
|
+
|
|
|
+ if (strcmp(_UserInfoTemp->user_token, Token) == 0)
|
|
|
+ {
|
|
|
+ userName = _UserInfoTemp->user_name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lock_s_release(LOCK_ID_USER_LOGIN);
|
|
|
+
|
|
|
+ return userName;
|
|
|
+}
|
|
|
+
|
|
|
+static bool CheckLoginStatus(char* Token)
|
|
|
+{
|
|
|
+ //return true;//先不处理401授权错误,待前端处理后再加 20240625 lyz
|
|
|
+
|
|
|
+ // 没有用户登录
|
|
|
+ int nLoginNum=0;
|
|
|
+ lock_s_hold(LOCK_ID_USER_LOGIN);
|
|
|
+ _User_Log *_UserInfoTemp = NULL;
|
|
|
+ list_for_each_entry(_UserInfoTemp, &_GlobalUserLoginInfo.list, list)
|
|
|
+ {
|
|
|
+ if (_UserInfoTemp == NULL)
|
|
|
+ break;
|
|
|
+ nLoginNum++;
|
|
|
+ }
|
|
|
+ lock_s_release(LOCK_ID_USER_LOGIN);
|
|
|
+
|
|
|
+ if (nLoginNum==0)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 根据Token查询不到登录的用户
|
|
|
+ if (Token != NULL && strcmp(Token, "") != 0 && getUserNamebyToken(Token) == NULL)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ // return __globalDeviceManage._globalDevInfo.login_status;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
static int upload_file(void *conn, char *path)
|
|
|
{
|
|
|
int r=-1,flag=0;
|
|
|
@@ -578,13 +636,18 @@ static void loginFunc(void* conn)
|
|
|
int ack_code=0;
|
|
|
if (!LoginFlag)
|
|
|
{
|
|
|
+ free(_newUserLogin);
|
|
|
ack_str = log_LoginFailedinfo_to_json();
|
|
|
ack_code = 201;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strcpy(_GlobalUserToken,g_token);
|
|
|
+
|
|
|
+ lock_s_hold(LOCK_ID_USER_LOGIN);
|
|
|
list_add_tail(&_newUserLogin->list, &_GlobalUserLoginInfo.list);
|
|
|
+ lock_s_release(LOCK_ID_USER_LOGIN);
|
|
|
+
|
|
|
ack_str = log_info_to_json(g_token);
|
|
|
ack_code = 200;
|
|
|
}
|
|
|
@@ -609,7 +672,23 @@ static void loginOutFunc(void* conn)
|
|
|
http_reply(conn, 400, NULL);
|
|
|
return ;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ lock_s_hold(LOCK_ID_USER_LOGIN);
|
|
|
+ _User_Log *_UserInfoTemp = NULL;
|
|
|
+ _User_Log * pos;
|
|
|
+ list_for_each_entry_safe(_UserInfoTemp, pos,&_GlobalUserLoginInfo.list, list)
|
|
|
+ {
|
|
|
+ if (_UserInfoTemp == NULL)
|
|
|
+ break;
|
|
|
+
|
|
|
+ if (g_token && strcmp(_UserInfoTemp->user_token, g_token) == 0)
|
|
|
+ {
|
|
|
+ list_del(&_UserInfoTemp->list);
|
|
|
+ free(_UserInfoTemp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lock_s_release(LOCK_ID_USER_LOGIN);
|
|
|
+
|
|
|
ack_str = log_info_to_json(g_token);
|
|
|
http_reply(conn, 200, ack_str);
|
|
|
free(g_token);
|