From d6a4bf47ef7dfaabd08fb8d514cde1832a055816 Mon Sep 17 00:00:00 2001 From: zecke Date: Sat, 17 Jul 2004 16:43:53 +0000 Subject: Add dropin for the Password implementation of libqpe --- diff --git a/libopie2/opiesecurity/multiauthpassword.cpp b/libopie2/opiesecurity/multiauthpassword.cpp new file mode 100644 index 0000000..16c8568 --- a/dev/null +++ b/libopie2/opiesecurity/multiauthpassword.cpp @@ -0,0 +1,106 @@ +/** + * \file multiauthpassord.cpp + * \brief Password Dialog dropin. + * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) + */ +/* + =. This file is part of the Opie Project + .=l. Copyright (C) 2004 Opie Developer Team + .>+-= + _;:, .> :=|. This library is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU Library General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + + +/* OPIE */ +#include +#include +#include +#include +#include + +/* QT */ +#include +#include +#include +#include +#include + +#include "multiauthpassword.h" + +namespace Opie { +namespace Security { + + +/** + * If the users requires authentication... #fixme + * + * @todo fix up at_poweron attribute + */ +bool MultiauthPassword::needToAuthenticate(bool at_poweron) +{ + Config cfg("Security"); + cfg.setGroup("Misc"); + if ( !at_poweron && cfg.readBoolEntry("onStart", true) ) + return true; + else if ( at_poweron && cfg.readBoolEntry("onResume", true) ) + return true; + else + return false; +} + + +/** + * \brief Require user authentication to unlock and continue + * + * This method will check if you require authentication + * and then will lock the screen and require a succesfull + * authentication. + * Authenticate may enter the event loop and only returns + * if the user sucesfully authenticated to the system. + * + * @return only if succesfully authenticated + */ +void MultiauthPassword::authenticate(bool at_poweron) +{ + if ( ! needToAuthenticate(at_poweron) ) + return; + + /* Constructs the main window, which displays messages and blocks + * access to the desktop + */ + MultiauthMainWindow win; + + // resize the QDialog object so it fills all the screen + QRect desk = qApp->desktop()->geometry(); + win.setGeometry( 0, 0, desk.width(), desk.height() ); + + // the authentication has already succeeded (without win interactions) + if ( win.isAlreadyDone() ) + return; + + win.exec(); +} + +} +} diff --git a/libopie2/opiesecurity/multiauthpassword.h b/libopie2/opiesecurity/multiauthpassword.h new file mode 100644 index 0000000..1d061b4 --- a/dev/null +++ b/libopie2/opiesecurity/multiauthpassword.h @@ -0,0 +1,59 @@ +/** + * \file multiauthpassord.h + * \brief Password Dialog dropin. + * \author Clément Séveillac (clement . seveillac (at) via . ecp . fr) + */ +/* + =. This file is part of the Opie Project + .=l. Copyright (C) 2004 Opie Developer Team + .>+-= + _;:, .> :=|. This library is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU Library General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + + +#ifndef OPIE_SEC_MULTIAUTHPASSWORD_H +#define OPIE_SEC_MULTIAUTHPASSWORD_H + +namespace Opie { +namespace Security { + +/** + * This is the dropin replacement for libqpes Password class. + * If you call authenticate() a widget will cover the whole screen + * and only return if the user is able to authenticate with any of the + * configured Authentication Plugins. + * This uses the \sa Opie::Security::MultiauthMainWindow internally. + * + * @author Clement Séveillac, Holger Freyther + */ +class MultiauthPassword { +public: + static bool needToAuthenticate( bool atpoweron=FALSE ); + static void authenticate(bool atpoweron = FALSE ); +}; + + +} +} +#endif -- cgit v0.9.0.2