Skip to content

Conversation

@waterlovemelon
Copy link
Contributor

chore: 修改插件编程指南

补充缺失的接口函数和消息协议,优化文档格式和内容

Log:
Influence: 修改文档,不涉及功能
Change-Id: I09efad1622a9c2f9c4e5d6d121fd644594114992 (cherry picked from commit cb89e7ca3e63f72cbcd8b3958a256bd813ef9d53)

feat: 删除写入到cache里面的日志

锁屏的日志已经写入到journal了,无需向cache目录重复写入日志

Log: 日志不再写入到cache目录
Influence: 日志
Task: https://pms.uniontech.com/task-view-379327.html Change-Id: I2ba0c2d10ff3f12cb50577bd4d853f06df28d6fe (cherry picked from commit 4f21e8889ffd8939f803240c898bde278b047507)

feat: 控制台日志只在调试模式下输出

发布模式下不输出控制台日志

Log: 控制台日志只在调试模式下输出
Influence: 日志
Task: https://pms.uniontech.com/task-view-379327.html Change-Id: I8c439d34c2807dc7a0ae7cc138c4d7b9ad929fc5 (cherry picked from commit de95b99e757a2ef3331b46809dc55af2fef4f1b0)

fix: 【DDE】【终端锁定】开启自动登录和无密码登录,终端锁定后,登录按钮未置灰显示

无密码认证时,需要同时考虑终端锁定的情况

Bug: https://pms.uniontech.com/bug-view-268089.html Log: 修复开启自动登录和无密码登录,终端锁定后,登录按钮未置灰显示问题
Change-Id: Ibd733db31f05bbb592a4be28d93ffba103805d40 (cherry picked from commit 954e344d7e32ccd0ee6732635711cff01fd4257c) (cherry picked from commit c59d73173a38b1cd7607c2bffde9565ad4a2822f)

fix: 待机信号处理中考虑其它流程设置的可见性

有些流程需要内置黑屏,所以可能在未锁定时拉起lock

Log: 响应唤醒时,处理可见性
Bug: https://pms.uniontech.com/bug-view-314491.html Change-Id: I9bd6171cc7dc3bb58223d20dbb8bb40aa39c9f9b (cherry picked from commit eb18a13d0a2b1a18e30fa5785dda72093bad4b8f) (cherry picked from commit e32cd5b00206307a187be1b0c77e96aa380b2173)

feat: 切换用户界面待机唤醒时进入锁屏界面

切换用户界面属于进入锁屏,唤起时仍进入锁屏界面,需输入密码进入系统

Log:
Task: https://pms.uniontech.com/task-view-379555.html Influence: 切换用户界面待机唤醒,以及各种和切换用户界面相关的逻辑
Change-Id: I382ba9e764c17a39627ac2099eda95bfc526901a (cherry picked from commit eb1221425988cdb7469ff0fc479ba3927df0dd1d)

fix: 极端情况无法获取到后端账户User列表信息,将页面显示成输入密码和账户的情况

极端情况无法获取到后端账户User列表信息,将页面显示成输入密码和账户的情况

Log: 极端情况无法获取到后端账户User列表信息,将页面显示成输入密码和账户的情况
Influence: 获取不到账户信息是greeter崩溃
Bug: https://pms.uniontech.com/bug-view-322207.html Change-Id: Ib0a3717f5a1e6d24f97d424d651d6a9c2398744d (cherry picked from commit ebb3a2e3839821a759598a17c02fbb460595e865)

fix: 登录界面显示两个重置密码弹窗

auth_password新建后,旧的析构未有检测重置密码弹窗,如果有,则应该关闭和释放内存。

Log: as title
Influence: 重置密码弹窗显示一个
Bug: https://pms.uniontech.com/bug-view-255785.html Change-Id: I49233803cb1347606c5cbdb600bd4c73b605009d (cherry picked from commit e44decfc7c1aa030a721059880955c41f34a0810)

fix: 如果开启了Checkpwd配置,关机时不能显示关机黑屏

如果开启了Checkpwd配置,关机时不能显示关机黑屏
以前增加关机黑屏,是为了解决关机、重启闪屏,但是未考虑到关机还有一个gsettings配置checkpwd

Log: 如果开启了Checkpwd配置,关机时不能显示关机黑屏
Influence: 开启配置关机
Bug: https://pms.uniontech.com/bug-view-328319.html Change-Id: I35cc895ae8e49795c00e42e774a3ace623ba4849 (cherry picked from commit 5df869bafb8c0a1022161610e8f343a1ccc50bc9)

fix: 修复密码错误详细弹框UI问题

  1. 密码错误详细弹框UI高度过高

Log: 高倍缩放(大于1倍)下,登录或锁屏界面下,密码错误的tooltip提示显示异常
Influence: 密码错误详细弹框
Bug: https://pms.uniontech.com/bug-view-328583.html Change-Id: I47bd8e29b9df22fe25565f4960ac3477bfe88aff (cherry picked from commit c8d180c73cb525affe499114939a5985a1ef66e0)

chore: 避免频繁通过接口查询错误提示框使能状态

没有必要的接口频繁调用

Change-Id: I3ec38657fd9337f5bd666035ecda25b914ba9c4c (cherry picked from commit 6d30c6b4a51886c7ab4fe822c1f8eabe56a27663)

fix: 重新修改免密登录待机唤醒场景

  1. 锁屏界面待机时,唤醒进入锁屏免密界面
  2. 关机界面待机时,唤醒进入桌面

Log: 【通用】关闭待机恢复时需要密码开关,开启免密登录开关,在桌面待机唤醒后,显示锁屏界面,没有直接进入桌面 Influence: 免密待机唤醒
Bug: https://pms.uniontech.com/bug-view-330173.html Change-Id: Ie6417fb0bd09bd397094e14b13e683b61b79a855 (cherry picked from commit 59c4c850fd0faab07f1482e6cb784c4c4ef5ddb3)

fix: 处理缩放和当前屏幕不匹配的情况

启动greeter之前判断下从配置文件中获取缩放和当前屏幕是否匹配,如果不匹配则用默认缩放1
这个只能处理启动greeter前插入屏幕的场景,greeter启动后插入和当前缩放不匹配的屏幕无法处理。

Log:
Bug: https://pms.uniontech.com/bug-view-331209.html Influence: 登录界面缩放(设计多种缩放比,最好用4K屏幕测试),多屏缩放比(相同分辨率屏幕和不同分辨率屏幕都需要测试) Change-Id: I4fd3cb3c616f877d5b0d134170e0d96dd7dbd896 (cherry picked from commit 813f345c203ad4b47356c10367a923e379bf65c8)

chore: 手势插件安装问题

明确dconfig配置文件归属,避免产生安装时文件冲突问题

Change-Id: I6185df3bd1a9541d6f56b22a71bffa889d03a5bd (cherry picked from commit d09727b0745c92f18cb3d445e6bb9069ebb232b8)

fix: 修复pgy待机唤醒过程中mouseRelease造成锁屏隐藏的问题

触发了WarningContent的展示,后响应鼠标事件隐藏锁屏

Log: 调整显示流程
Influence: 修复问题
Bug: https://pms.uniontech.com/bug-view-331651.html Change-Id: I413352c235207ff8830f764dc0ddebe7aae2d81c (cherry picked from commit 31cf025ab5d3cd29cd9b4027a5d42068c148b352)

fix: 修复唤醒过程中频繁点击造成锁屏隐藏的问题

存在两个方面的影响:
1 UI设置不正确(显示WarningContent)
2 外部设置的lock状态导致判断条件不满足

Log: 调整逻辑
Influence: 修复问题
Bug: https://pms.uniontech.com/bug-view-331651.html Change-Id: I086a236255e9ceeacee4adfa587f3ba33a6a8ad7 (cherry picked from commit a0368c0fd23021c7b0bfba47e9f1b185f08c7a87)

chore: 增加显示登录框的日志

增加显示登录框的日志,用以后面分析问题

Log:
Influence: 无功能影响
Change-Id: I060771e650780cff4ac5b02272f4974aeaedaa39 (cherry picked from commit 0a62937301974e8ad92222b9f0559d0253b2a51d)

chore: 修改插件编程指南

补充缺失的接口函数和消息协议,优化文档格式和内容

Log:
Influence: 修改文档,不涉及功能
Change-Id: I09efad1622a9c2f9c4e5d6d121fd644594114992
(cherry picked from commit cb89e7ca3e63f72cbcd8b3958a256bd813ef9d53)

feat: 删除写入到cache里面的日志

锁屏的日志已经写入到journal了,无需向cache目录重复写入日志

Log: 日志不再写入到cache目录
Influence: 日志
Task: https://pms.uniontech.com/task-view-379327.html
Change-Id: I2ba0c2d10ff3f12cb50577bd4d853f06df28d6fe
(cherry picked from commit 4f21e8889ffd8939f803240c898bde278b047507)

feat: 控制台日志只在调试模式下输出

发布模式下不输出控制台日志

Log: 控制台日志只在调试模式下输出
Influence: 日志
Task: https://pms.uniontech.com/task-view-379327.html
Change-Id: I8c439d34c2807dc7a0ae7cc138c4d7b9ad929fc5
(cherry picked from commit de95b99e757a2ef3331b46809dc55af2fef4f1b0)

fix: 【DDE】【终端锁定】开启自动登录和无密码登录,终端锁定后,登录按钮未置灰显示

  无密码认证时,需要同时考虑终端锁定的情况

Bug: https://pms.uniontech.com/bug-view-268089.html
Log: 修复开启自动登录和无密码登录,终端锁定后,登录按钮未置灰显示问题
Change-Id: Ibd733db31f05bbb592a4be28d93ffba103805d40
(cherry picked from commit 954e344d7e32ccd0ee6732635711cff01fd4257c)
(cherry picked from commit c59d73173a38b1cd7607c2bffde9565ad4a2822f)

fix: 待机信号处理中考虑其它流程设置的可见性

有些流程需要内置黑屏,所以可能在未锁定时拉起lock

Log: 响应唤醒时,处理可见性
Bug: https://pms.uniontech.com/bug-view-314491.html
Change-Id: I9bd6171cc7dc3bb58223d20dbb8bb40aa39c9f9b
(cherry picked from commit eb18a13d0a2b1a18e30fa5785dda72093bad4b8f)
(cherry picked from commit e32cd5b00206307a187be1b0c77e96aa380b2173)

feat: 切换用户界面待机唤醒时进入锁屏界面

切换用户界面属于进入锁屏,唤起时仍进入锁屏界面,需输入密码进入系统

Log:
Task: https://pms.uniontech.com/task-view-379555.html
Influence: 切换用户界面待机唤醒,以及各种和切换用户界面相关的逻辑
Change-Id: I382ba9e764c17a39627ac2099eda95bfc526901a
(cherry picked from commit eb1221425988cdb7469ff0fc479ba3927df0dd1d)

fix: 极端情况无法获取到后端账户User列表信息,将页面显示成输入密码和账户的情况

极端情况无法获取到后端账户User列表信息,将页面显示成输入密码和账户的情况

Log: 极端情况无法获取到后端账户User列表信息,将页面显示成输入密码和账户的情况
Influence: 获取不到账户信息是greeter崩溃
Bug: https://pms.uniontech.com/bug-view-322207.html
Change-Id: Ib0a3717f5a1e6d24f97d424d651d6a9c2398744d
(cherry picked from commit ebb3a2e3839821a759598a17c02fbb460595e865)

fix: 登录界面显示两个重置密码弹窗

auth_password新建后,旧的析构未有检测重置密码弹窗,如果有,则应该关闭和释放内存。

Log: as title
Influence: 重置密码弹窗显示一个
Bug: https://pms.uniontech.com/bug-view-255785.html
Change-Id: I49233803cb1347606c5cbdb600bd4c73b605009d
(cherry picked from commit e44decfc7c1aa030a721059880955c41f34a0810)

fix: 如果开启了Checkpwd配置,关机时不能显示关机黑屏

如果开启了Checkpwd配置,关机时不能显示关机黑屏
以前增加关机黑屏,是为了解决关机、重启闪屏,但是未考虑到关机还有一个gsettings配置checkpwd

Log: 如果开启了Checkpwd配置,关机时不能显示关机黑屏
Influence: 开启配置关机
Bug: https://pms.uniontech.com/bug-view-328319.html
Change-Id: I35cc895ae8e49795c00e42e774a3ace623ba4849
(cherry picked from commit 5df869bafb8c0a1022161610e8f343a1ccc50bc9)

fix: 修复密码错误详细弹框UI问题

1. 密码错误详细弹框UI高度过高

Log: 高倍缩放(大于1倍)下,登录或锁屏界面下,密码错误的tooltip提示显示异常
Influence: 密码错误详细弹框
Bug: https://pms.uniontech.com/bug-view-328583.html
Change-Id: I47bd8e29b9df22fe25565f4960ac3477bfe88aff
(cherry picked from commit c8d180c73cb525affe499114939a5985a1ef66e0)

chore: 避免频繁通过接口查询错误提示框使能状态

没有必要的接口频繁调用

Change-Id: I3ec38657fd9337f5bd666035ecda25b914ba9c4c
(cherry picked from commit 6d30c6b4a51886c7ab4fe822c1f8eabe56a27663)

fix: 重新修改免密登录待机唤醒场景

1. 锁屏界面待机时,唤醒进入锁屏免密界面
2. 关机界面待机时,唤醒进入桌面

Log: 【通用】关闭待机恢复时需要密码开关,开启免密登录开关,在桌面待机唤醒后,显示锁屏界面,没有直接进入桌面
Influence: 免密待机唤醒
Bug: https://pms.uniontech.com/bug-view-330173.html
Change-Id: Ie6417fb0bd09bd397094e14b13e683b61b79a855
(cherry picked from commit 59c4c850fd0faab07f1482e6cb784c4c4ef5ddb3)

fix: 处理缩放和当前屏幕不匹配的情况

启动greeter之前判断下从配置文件中获取缩放和当前屏幕是否匹配,如果不匹配则用默认缩放1
这个只能处理启动greeter前插入屏幕的场景,greeter启动后插入和当前缩放不匹配的屏幕无法处理。

Log:
Bug: https://pms.uniontech.com/bug-view-331209.html
Influence: 登录界面缩放(设计多种缩放比,最好用4K屏幕测试),多屏缩放比(相同分辨率屏幕和不同分辨率屏幕都需要测试)
Change-Id: I4fd3cb3c616f877d5b0d134170e0d96dd7dbd896
(cherry picked from commit 813f345c203ad4b47356c10367a923e379bf65c8)

chore: 手势插件安装问题

明确dconfig配置文件归属,避免产生安装时文件冲突问题

Change-Id: I6185df3bd1a9541d6f56b22a71bffa889d03a5bd
(cherry picked from commit d09727b0745c92f18cb3d445e6bb9069ebb232b8)

fix: 修复pgy待机唤醒过程中mouseRelease造成锁屏隐藏的问题

触发了WarningContent的展示,后响应鼠标事件隐藏锁屏

Log: 调整显示流程
Influence: 修复问题
Bug: https://pms.uniontech.com/bug-view-331651.html
Change-Id: I413352c235207ff8830f764dc0ddebe7aae2d81c
(cherry picked from commit 31cf025ab5d3cd29cd9b4027a5d42068c148b352)

fix: 修复唤醒过程中频繁点击造成锁屏隐藏的问题

存在两个方面的影响:
1 UI设置不正确(显示WarningContent)
2 外部设置的lock状态导致判断条件不满足

Log: 调整逻辑
Influence: 修复问题
Bug: https://pms.uniontech.com/bug-view-331651.html
Change-Id: I086a236255e9ceeacee4adfa587f3ba33a6a8ad7
(cherry picked from commit a0368c0fd23021c7b0bfba47e9f1b185f08c7a87)

chore: 增加显示登录框的日志

增加显示登录框的日志,用以后面分析问题

Log:
Influence: 无功能影响
Change-Id: I060771e650780cff4ac5b02272f4974aeaedaa39
(cherry picked from commit 0a62937301974e8ad92222b9f0559d0253b2a51d)
deepin-ci-robot added a commit to linuxdeepin/dde-session-shell-snipe that referenced this pull request Sep 5, 2025
Synchronize source files from linuxdeepin/dde-session-shell.

Source-pull-request: linuxdeepin/dde-session-shell#34
@deepin-ci-robot
Copy link

deepin pr auto review

代码审查报告

总体评价

这是一个关于 UOS 登录器插件的开发指南和代码变更,主要涉及认证插件的接口规范、实现细节和系统登录/锁屏功能的改进。代码整体结构清晰,功能实现完整,但仍有部分可以优化的地方。

具体改进建议

1. 代码质量

问题:代码注释不完整

  • dde-lock.cpp 中新增的日志记录功能缺少必要的注释说明
  • 建议:为关键代码段添加清晰注释,特别是新增的功能逻辑

问题:变量命名不够清晰

  • lockworker.cppdoSuspendTime 变量名不够明确
  • 建议:改为 suspendStartTimesystemSuspendTime 更具描述性

问题:代码重复

  • greeterworker.cpplockworker.cpp 中有重复的用户列表初始化逻辑
  • 建议:抽取为公共函数,避免代码重复

2. 性能优化

问题:资源使用效率

  • getScaleList() 函数中频繁调用 X11 API,可能影响性能
  • 建议:
    • 添加缓存机制,避免重复计算
    • 考虑使用异步方式获取屏幕信息

问题:内存管理

  • AuthPassword 类中存在潜在内存泄漏风险
  • 建议:
    • 确保所有动态分配的资源都有对应的释放逻辑
    • 使用智能指针管理资源

3. 安全性

问题:敏感信息处理

  • 密码错误提示功能可能暴露系统信息
  • 建议:
    • 对错误信息进行脱敏处理
    • 添加日志级别控制,避免敏感信息记录到日志中

问题:认证流程安全性

  • 重置认证状态时可能存在竞态条件
  • 建议:
    • 添加状态锁机制
    • 增加异常处理,确保认证状态的一致性

4. 功能改进

问题:用户体验

  • 锁屏界面切换时的状态处理不够完善
  • 建议:
    • 添加过渡动画
    • 优化状态切换的响应速度

问题:错误处理

  • 部分错误情况处理不够完善
  • 建议:
    • 增加错误码定义
    • 提供更友好的错误提示

5. 架构优化

问题:模块耦合

  • 登录和锁屏功能存在部分重复代码
  • 建议:
    • 抽取公共基类
    • 使用组合模式替代继承

问题:配置管理

  • 配置项分散在多个文件中
  • 建议:
    • 统一配置管理
    • 添加配置项验证机制

具体修改建议

  1. 代码规范
// 建议的代码风格
class AuthModule {
public:
    explicit AuthModule(QWidget *parent = nullptr);
    virtual ~AuthModule() = default;
    
    virtual void reset() = 0;
    virtual QString lineEditText() const = 0;
    
protected:
    void showErrorTip(const QString &text);
    void clearErrorTips();
};
  1. 错误处理优化
// 建议的错误处理方式
try {
    // 认证逻辑
    if (!authenticate(user, password)) {
        throw AuthenticationError("认证失败");
    }
} catch (const AuthenticationError &e) {
    showErrorTip(e.message());
    logError(e);
}
  1. 性能优化
// 建议的缓存机制
class ScaleManager {
private:
    QHash<QString, double> m_scaleCache;
    QMutex m_cacheMutex;
    
public:
    double getScaleFactor(const QString &screenId) {
        QMutexLocker locker(&m_cacheMutex);
        if (m_scaleCache.contains(screenId)) {
            return m_scaleCache.value(screenId);
        }
        // 计算并缓存
        double scale = calculateScale(screenId);
        m_scaleCache.insert(screenId, scale);
        return scale;
    }
};
  1. 安全性增强
// 建议的安全处理
class SecureAuth {
private:
    QByteArray encryptPassword(const QString &password) {
        // 使用安全加密算法
        return QCryptographicHash::hash(password.toUtf8(), QCryptographicHash::Sha256);
    }
    
    bool verifyPassword(const QString &input, const QByteArray &encrypted) {
        QByteArray inputHash = encryptPassword(input);
        return constantTimeCompare(inputHash, encrypted);
    }
};

总结

  1. 代码整体质量良好,但需要进一步优化代码结构和错误处理
  2. 性能方面可以通过缓存和异步处理进行优化
  3. 安全性需要重点关注认证流程和敏感信息处理
  4. 建议统一配置管理,提高代码可维护性
  5. 需要完善错误处理机制,提供更好的用户体验

建议按照上述建议逐步改进代码,特别是安全性相关的部分。同时,建议添加更多的单元测试,确保代码质量和功能正确性。

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: waterlovemelon, yixinshark

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@waterlovemelon waterlovemelon merged commit b426c75 into linuxdeepin:master Sep 5, 2025
14 of 15 checks passed
yixinshark added a commit to linuxdeepin/dde-session-shell-snipe that referenced this pull request Sep 12, 2025
Synchronize source files from linuxdeepin/dde-session-shell.

Source-pull-request: linuxdeepin/dde-session-shell#34

Co-authored-by: zyz <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants