Skip to main content

Qt Desktop App

A Qt desktop app example for Casdoor.

How to Run the Example

Prerequisites

Initialization

You need to initialize 7 string parameters:

NameDescriptionFile
endpointYour Casdoor server host/domainmainwindow.h
client_idThe Client ID of your Casdoor applicationmainwindow.h
client_secretThe Client Secret of your Casdoor applicationmainwindow.h
certificateThe public key for the Casdoor application's certmainwindow.h
org_nameThe name of your Casdoor organizationmainwindow.h
app_nameThe name of your Casdoor applicationmainwindow.h
redirect_urlThe path of the callback URL for your Casdoor application, will be http://localhost:8080/callback if not providedmainwindow.h

If you don't set the endpoint parameter, this project will use http://localhost:8000 as the default Casdoor server.

Running the Application

Using Qt Creator

  1. Open casdoor-cpp-qt-example.pro
  2. Set the INCLUDEPATH of OpenSSL in casdoor-cpp-qt-example.pro
  3. Press Ctrl + R to start

Preview

After running this Qt desktop application, a new window will be shown on your desktop.

index

If you click the Sign In button, a login window will be shown on your desktop.

login

After a successful login, a user profile window will be shown on your desktop, displaying your user information.

user profile

You can preview the entire process in the following GIF image.

preview gif

How to Integrate

Opening the Login Window

// Load and display the login page of Casdoor
m_webview->page()->load(*m_signin_url);
m_webview->show();

Listening to the Open Application Event

// Initialize the TcpServer object and listen on port 8080
m_tcpserver = new QTcpServer(this);
if (!m_tcpserver->listen(QHostAddress::LocalHost, 8080)) {
qDebug() << m_tcpserver->errorString();
close();
}
connect(m_tcpserver, SIGNAL(newConnection()), this, SLOT(on_tcp_connected()));

Using Auth Code to Get the User Info

// Get the token and parse it with the JWT library
std::string token = m_casdoor->GetOAuthToken(code.toStdString());
auto decoded = m_casdoor->ParseJwtToken(token);