mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-02-07 15:08:24 +00:00
feat(ui/views/App/Main): display popup when auth failed
This commit is contained in:
parent
c1645184ad
commit
c714ad8de3
20 changed files with 307 additions and 8 deletions
|
|
@ -89,6 +89,7 @@ set(SOURCES
|
|||
src/app/providers/ThumbnailProvider.cpp
|
||||
src/app/translator/DefaultTranslator.cpp
|
||||
src/components/assistant/AssistantModel.cpp
|
||||
src/components/authentication/Authentication.cpp
|
||||
src/components/call/CallModel.cpp
|
||||
src/components/calls/CallsListModel.cpp
|
||||
src/components/camera/Camera.cpp
|
||||
|
|
@ -126,9 +127,10 @@ set(HEADERS
|
|||
src/app/providers/ThumbnailProvider.hpp
|
||||
src/app/translator/DefaultTranslator.hpp
|
||||
src/components/assistant/AssistantModel.hpp
|
||||
src/components/camera/Camera.hpp
|
||||
src/components/authentication/Authentication.hpp
|
||||
src/components/call/CallModel.hpp
|
||||
src/components/calls/CallsListModel.hpp
|
||||
src/components/camera/Camera.hpp
|
||||
src/components/camera/MSFunctions.hpp
|
||||
src/components/chat/ChatModel.hpp
|
||||
src/components/chat/ChatProxyModel.hpp
|
||||
|
|
|
|||
|
|
@ -144,6 +144,33 @@
|
|||
<translation>Please verify that you have validated your account or try again.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AuthenticationRequest</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation>CANCEL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>confirm</source>
|
||||
<translation>LOGIN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>identityLabel</source>
|
||||
<translation>Identity</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>passwordLabel</source>
|
||||
<translation>Password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>authentificationRequestDescription</source>
|
||||
<translation>Unable to authenticate. Please verify your password.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>userIdLabel</source>
|
||||
<translation>User ID (optional)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Calls</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -144,6 +144,33 @@
|
|||
<translation>Merci de vérifier que vous avez validé votre compte ou réessayez plus tard.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AuthenticationRequest</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation>ANNULER</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>confirm</source>
|
||||
<translation>SE CONNECTER</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>identityLabel</source>
|
||||
<translation>Identité</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>passwordLabel</source>
|
||||
<translation>Mot de passe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>authentificationRequestDescription</source>
|
||||
<translation>Impossible de vous authentifier. Merci de vérifier votre mot de passe.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>userIdLabel</source>
|
||||
<translation>ID utilisateur (optionnel)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Calls</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -345,6 +345,8 @@
|
|||
<file>ui/views/App/Main/Assistant/UseLinphoneSipAccountWithPhoneNumber.qml</file>
|
||||
<file>ui/views/App/Main/Assistant/UseLinphoneSipAccountWithUsername.qml</file>
|
||||
<file>ui/views/App/Main/Assistant/UseOtherSipAccount.qml</file>
|
||||
<file>ui/views/App/Main/AuthenticationRequest.js</file>
|
||||
<file>ui/views/App/Main/AuthenticationRequest.qml</file>
|
||||
<file>ui/views/App/Main/ContactEdit.js</file>
|
||||
<file>ui/views/App/Main/ContactEdit.qml</file>
|
||||
<file>ui/views/App/Main/Contacts.qml</file>
|
||||
|
|
@ -375,6 +377,7 @@
|
|||
<file>ui/views/App/Styles/Main/Assistant/CreateLinphoneSipAccountStyle.qml</file>
|
||||
<file>ui/views/App/Styles/Main/AssistantStyle.qml</file>
|
||||
<file>ui/views/App/Styles/Main/Assistant/UseLinphoneSipAccountStyle.qml</file>
|
||||
<file>ui/views/App/Styles/Main/AuthenticationRequestStyle.qml</file>
|
||||
<file>ui/views/App/Styles/Main/ContactEditStyle.qml</file>
|
||||
<file>ui/views/App/Styles/Main/ContactsStyle.qml</file>
|
||||
<file>ui/views/App/Styles/Main/ConversationStyle.qml</file>
|
||||
|
|
|
|||
|
|
@ -276,10 +276,11 @@ void App::registerTypes () {
|
|||
qInfo() << "Registering types...";
|
||||
|
||||
qmlRegisterType<AssistantModel>("Linphone", 1, 0, "AssistantModel");
|
||||
qmlRegisterType<Authentication>("Linphone", 1, 0, "Authentication");
|
||||
qmlRegisterType<Camera>("Linphone", 1, 0, "Camera");
|
||||
qmlRegisterType<ContactsListProxyModel>("Linphone", 1, 0, "ContactsListProxyModel");
|
||||
qmlRegisterType<ChatModel>("Linphone", 1, 0, "ChatModel");
|
||||
qmlRegisterType<ChatProxyModel>("Linphone", 1, 0, "ChatProxyModel");
|
||||
qmlRegisterType<ContactsListProxyModel>("Linphone", 1, 0, "ContactsListProxyModel");
|
||||
qmlRegisterType<SmartSearchBarModel>("Linphone", 1, 0, "SmartSearchBarModel");
|
||||
|
||||
qRegisterMetaType<ChatModel::EntryType>("ChatModel::EntryType");
|
||||
|
|
@ -394,7 +395,7 @@ void App::openAppAfterInit () {
|
|||
getMainWindow()->showNormal();
|
||||
#else
|
||||
getMainWindow()->showNormal();
|
||||
#endif // ifndef __APPLE__
|
||||
#endif // ifndef __APPLE__
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
#include "assistant/AssistantModel.hpp"
|
||||
#include "authentication/Authentication.hpp"
|
||||
#include "calls/CallsListModel.hpp"
|
||||
#include "camera/Camera.hpp"
|
||||
#include "chat/ChatProxyModel.hpp"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Authentication.cpp
|
||||
* Copyright (C) 2017 Belledonne Communications, Grenoble, France
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* Created on: April 13, 2017
|
||||
* Author: Ronan Abhamon
|
||||
*/
|
||||
|
||||
#include "../../utils.hpp"
|
||||
#include "../core/CoreManager.hpp"
|
||||
|
||||
#include "Authentication.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
// =============================================================================
|
||||
|
||||
Authentication::Authentication (QObject *parent) : QObject(parent) {
|
||||
QObject::connect(
|
||||
&(*CoreManager::getInstance()->getHandlers()), &CoreHandlers::authenticationRequested,
|
||||
this, &Authentication::handleAuthenticationRequested
|
||||
);
|
||||
}
|
||||
|
||||
void Authentication::handleAuthenticationRequested (const shared_ptr<linphone::AuthInfo> &authInfo) {
|
||||
emit authenticationRequested(
|
||||
QVariant::fromValue(authInfo),
|
||||
QStringLiteral("%1@%2").arg(
|
||||
::Utils::linphoneStringToQString(authInfo->getUsername())
|
||||
).arg(
|
||||
::Utils::linphoneStringToQString(authInfo->getDomain())
|
||||
),
|
||||
::Utils::linphoneStringToQString(authInfo->getUserid())
|
||||
);
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* Authentication.hpp
|
||||
* Copyright (C) 2017 Belledonne Communications, Grenoble, France
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* Created on: April 13, 2017
|
||||
* Author: Ronan Abhamon
|
||||
*/
|
||||
|
||||
#ifndef AUTHENTICATION_H_
|
||||
#define AUTHENTICATION_H_
|
||||
|
||||
#include <linphone++/linphone.hh>
|
||||
#include <QObject>
|
||||
|
||||
// =============================================================================
|
||||
|
||||
class Authentication : public QObject {
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
Authentication (QObject *parent = Q_NULLPTR);
|
||||
|
||||
~Authentication () = default;
|
||||
|
||||
signals:
|
||||
void authenticationRequested (const QVariant &authInfo, const QString &sipAddress, const QString &userId);
|
||||
|
||||
private:
|
||||
void handleAuthenticationRequested (const std::shared_ptr<linphone::AuthInfo> &authInfo);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(std::shared_ptr<linphone::AuthInfo> );
|
||||
|
||||
#endif // AUTHENTICATION_H_
|
||||
|
|
@ -34,10 +34,10 @@ using namespace std;
|
|||
|
||||
void CoreHandlers::onAuthenticationRequested (
|
||||
const shared_ptr<linphone::Core> &,
|
||||
const shared_ptr<linphone::AuthInfo> &,
|
||||
const shared_ptr<linphone::AuthInfo> &auth_info,
|
||||
linphone::AuthMethod
|
||||
) {
|
||||
qDebug() << "Auth request";
|
||||
emit authenticationRequested(auth_info);
|
||||
}
|
||||
|
||||
void CoreHandlers::onCallStateChanged (
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ class CoreHandlers :
|
|||
Q_OBJECT;
|
||||
|
||||
signals:
|
||||
void authenticationRequested (const std::shared_ptr<linphone::AuthInfo> &auth_info);
|
||||
void callStateChanged (const std::shared_ptr<linphone::Call> &call, linphone::CallState state);
|
||||
void messageReceived (const std::shared_ptr<linphone::ChatMessage> &message);
|
||||
void presenceReceived (const QString &sip_address, const std::shared_ptr<const linphone::PresenceModel> &presence_model);
|
||||
|
|
|
|||
|
|
@ -171,6 +171,17 @@ shared_ptr<linphone::ProxyConfig> AccountSettingsModel::createProxyConfig () {
|
|||
return CoreManager::getInstance()->getCore()->createProxyConfig();
|
||||
}
|
||||
|
||||
void AccountSettingsModel::addAuthInfo (
|
||||
const shared_ptr<linphone::AuthInfo> &auth_info,
|
||||
const QString &password,
|
||||
const QString &user_id
|
||||
) {
|
||||
auth_info->setPasswd(::Utils::qStringToLinphoneString(password));
|
||||
auth_info->setUserid(::Utils::qStringToLinphoneString(user_id));
|
||||
|
||||
CoreManager::getInstance()->getCore()->addAuthInfo(auth_info);
|
||||
}
|
||||
|
||||
void AccountSettingsModel::eraseAllPasswords () {
|
||||
CoreManager::getInstance()->getCore()->clearAllAuthInfo();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,12 @@ public:
|
|||
|
||||
Q_INVOKABLE std::shared_ptr<linphone::ProxyConfig> createProxyConfig ();
|
||||
|
||||
Q_INVOKABLE void addAuthInfo (
|
||||
const std::shared_ptr<linphone::AuthInfo> &auth_info,
|
||||
const QString &password,
|
||||
const QString &user_id
|
||||
);
|
||||
|
||||
Q_INVOKABLE void eraseAllPasswords ();
|
||||
|
||||
signals:
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ QtObject {
|
|||
}
|
||||
|
||||
property QtObject description: QtObject {
|
||||
property color color: Colors.l
|
||||
property color color: Colors.j
|
||||
property int fontSize: 11
|
||||
property int verticalMargin: 25
|
||||
}
|
||||
|
|
|
|||
11
linphone-desktop/ui/views/App/Main/AuthenticationRequest.js
Normal file
11
linphone-desktop/ui/views/App/Main/AuthenticationRequest.js
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// =============================================================================
|
||||
// `AuthenticationRequest.qml` Logic.
|
||||
// =============================================================================
|
||||
|
||||
.import Linphone 1.0 as Linphone
|
||||
|
||||
// =============================================================================
|
||||
|
||||
function confirmPassword () {
|
||||
Linphone.AccountSettingsModel.addAuthInfo(dialog.authInfo, password.text, userId.text)
|
||||
}
|
||||
86
linphone-desktop/ui/views/App/Main/AuthenticationRequest.qml
Normal file
86
linphone-desktop/ui/views/App/Main/AuthenticationRequest.qml
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
import QtQuick 2.7
|
||||
|
||||
import Common 1.0
|
||||
|
||||
import App.Styles 1.0
|
||||
|
||||
import 'AuthenticationRequest.js' as Logic
|
||||
|
||||
// =============================================================================
|
||||
|
||||
DialogPlus {
|
||||
id: dialog
|
||||
|
||||
property alias sipAddress: identity.text
|
||||
property alias userId: userId.text
|
||||
|
||||
property var authInfo
|
||||
|
||||
buttons: [
|
||||
TextButtonA {
|
||||
text: qsTr('cancel')
|
||||
|
||||
onClicked: exit(0)
|
||||
},
|
||||
TextButtonB {
|
||||
enabled: password.length > 0
|
||||
text: qsTr('confirm')
|
||||
|
||||
onClicked: {
|
||||
Logic.confirmPassword()
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
centeredButtons: true
|
||||
descriptionText: qsTr('authentificationRequestDescription')
|
||||
|
||||
height: AuthenticationRequestStyle.height
|
||||
width: AuthenticationRequestStyle.width
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Form {
|
||||
orientation: Qt.Vertical
|
||||
|
||||
anchors {
|
||||
left: parent.left
|
||||
leftMargin: AuthenticationRequestStyle.leftMargin
|
||||
right: parent.right
|
||||
rightMargin: AuthenticationRequestStyle.rightMargin
|
||||
}
|
||||
|
||||
FormLine {
|
||||
FormGroup {
|
||||
label: qsTr('identityLabel')
|
||||
|
||||
TextField {
|
||||
id: identity
|
||||
|
||||
readOnly: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FormLine {
|
||||
FormGroup {
|
||||
label: qsTr('userIdLabel')
|
||||
|
||||
TextField {
|
||||
id: userId
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FormLine {
|
||||
FormGroup {
|
||||
label: qsTr('passwordLabel')
|
||||
|
||||
TextField {
|
||||
id: password
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -85,3 +85,13 @@ function updateSelectedEntry (view, props) {
|
|||
timeline.resetSelectedEntry()
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
function handleAuthenticationRequested (authInfo, sipAddress, userId) {
|
||||
window.attachVirtualWindow(Qt.resolvedUrl('AuthenticationRequest.qml'), {
|
||||
authInfo: authInfo,
|
||||
sipAddress: sipAddress,
|
||||
userId: userId
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,6 +84,12 @@ ApplicationWindow {
|
|||
|
||||
spacing: 0
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
Authentication {
|
||||
onAuthenticationRequested: Logic.handleAuthenticationRequested(authInfo, sipAddress, userId)
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// Toolbar properties.
|
||||
// -----------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
pragma Singleton
|
||||
import QtQuick 2.7
|
||||
|
||||
// =============================================================================
|
||||
|
||||
QtObject {
|
||||
property int height: 366
|
||||
property int leftMargin: 35
|
||||
property int rightMargin: 35
|
||||
property int width: 480
|
||||
}
|
||||
|
|
@ -1,8 +1,6 @@
|
|||
pragma Singleton
|
||||
import QtQuick 2.7
|
||||
|
||||
import Common 1.0
|
||||
|
||||
// =============================================================================
|
||||
|
||||
QtObject {
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ singleton CreateLinphoneSipAccountStyle 1.0 Main/Assistant/CreateLinp
|
|||
singleton UseLinphoneSipAccountStyle 1.0 Main/Assistant/UseLinphoneSipAccountStyle.qml
|
||||
|
||||
singleton AssistantStyle 1.0 Main/AssistantStyle.qml
|
||||
singleton AuthenticationRequestStyle 1.0 Main/AuthenticationRequestStyle.qml
|
||||
singleton ContactEditStyle 1.0 Main/ContactEditStyle.qml
|
||||
singleton ContactsStyle 1.0 Main/ContactsStyle.qml
|
||||
singleton ConversationStyle 1.0 Main/ConversationStyle.qml
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue