Add base db objects and login widget.
This commit is contained in:
45
src/db/AudioTrack.h
Normal file
45
src/db/AudioTrack.h
Normal 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
48
src/db/User.h
Normal 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
50
src/db/UserAction.h
Normal 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
29
src/ui/LoginInterface.cpp
Normal 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
35
src/ui/LoginInterface.h
Normal 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
|
||||
Reference in New Issue
Block a user