Add base db objects and login widget.

This commit is contained in:
Kevin Whitaker
2017-01-28 12:01:26 -05:00
parent a60e2a0c34
commit c8637f2af6
5 changed files with 207 additions and 0 deletions

45
src/db/AudioTrack.h Normal file
View File

@@ -0,0 +1,45 @@
/*
* Copyright (C) 2017 Kevin Whitaker <eyecreate@gmail.com>
*
* 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.
*
*/
#ifndef AUDIOTRACK_H
#define AUDIOTRACK_H
#include <Wt/Dbo/Dbo>
class AudioTrack
{
public:
std::string trackName;
std::string trackArtistName;
std::string trackAlbumName;
std::string trackGenre;
std::string trackPath;
template<class Action>
void persist(Action& a)
{
Wt::Dbo::field(a, trackName, "name");
Wt::Dbo::field(a, trackArtistName, "artist");
Wt::Dbo::field(a, trackAlbumName, "album");
Wt::Dbo::field(a, trackGenre, "genre");
Wt::Dbo::field(a, trackPath, "path");
}
};
#endif

48
src/db/User.h Normal file
View File

@@ -0,0 +1,48 @@
/*
* Copyright (C) 2017 Kevin Whitaker <eyecreate@gmail.com>
*
* 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.
*
*/
#ifndef USER_H
#define USER_H
#include <Wt/Dbo/Dbo>
#include <Wt/WGlobal>
class User
{
public:
std::string username;
std::string passwordHash;
std::string passwordSalt;
bool isDisabled;
bool isAdmin;
std::string loginCookieToken;
template<class Action>
void persist(Action& a)
{
Wt::Dbo::field(a, username, "username");
Wt::Dbo::field(a, passwordHash, "hash");
Wt::Dbo::field(a, passwordSalt, "salt");
Wt::Dbo::field(a, isDisabled, "disabled");
Wt::Dbo::field(a, isAdmin, "admin");
Wt::Dbo::field(a, loginCookieToken, "cookie");
}
};
#endif

50
src/db/UserAction.h Normal file
View File

@@ -0,0 +1,50 @@
/*
* Copyright (C) 2017 Kevin Whitaker <eyecreate@gmail.com>
*
* 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.
*
*/
#ifndef USERACTION_H
#define USERACTION_H
#include <Wt/Dbo/Dbo>
#include <Wt/WDateTime>
#include <Wt/Dbo/WtSqlTraits>
#include "User.h"
#include "AudioTrack.h"
class UserAction
{
public:
enum UAction {Login = 0, Logout = 1, RequestTrack = 2, VoteTrack = 3, UploadTrack = 4, RequestSkip = 5, Pause = 6};
User user;
UAction action;
AudioTrack trackInvolved;
Wt::WDateTime datetime;
template<class Action>
void persist(Action& a)
{
Wt::Dbo::field(a, user, "user");
Wt::Dbo::field(a, action, "action");
Wt::Dbo::field(a, trackInvolved, "track");
Wt::Dbo::field(a, datetime, "datetime");
}
};
#endif

29
src/ui/LoginInterface.cpp Normal file
View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2017 Kevin Whitaker <eyecreate@gmail.com>
*
* 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.
*
*/
#include "LoginInterface.h"
#include <Wt/WText>
LoginInterface::LoginInterface(WebInterface* app)
{
loginButton = new Wt::WPushButton("Login");
loginButton->clicked().connect(app, &WebInterface::loginCompleted);
setContentAlignment(Wt::AlignmentFlag::AlignCenter);
addChild(loginButton);
}

35
src/ui/LoginInterface.h Normal file
View File

@@ -0,0 +1,35 @@
/*
* Copyright (C) 2017 Kevin Whitaker <eyecreate@gmail.com>
*
* 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.
*
*/
#ifndef LOGININTERFACE_H
#define LOGININTERFACE_H
#include <Wt/WContainerWidget>
#include <Wt/WPushButton>
#include "../WebInterface.h"
class LoginInterface : public Wt::WContainerWidget
{
public:
LoginInterface(WebInterface* app);
private:
Wt::WPushButton* loginButton;
};
#endif // LOGININTERFACE_H