diff --git a/src/db/AudioTrack.h b/src/db/AudioTrack.h new file mode 100644 index 0000000000000000000000000000000000000000..8d4599022e21e9f7457e994274cae84248b8d083 --- /dev/null +++ b/src/db/AudioTrack.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2017 Kevin Whitaker + * + * 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 + +class AudioTrack +{ +public: + std::string trackName; + std::string trackArtistName; + std::string trackAlbumName; + std::string trackGenre; + std::string trackPath; + + template + 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 diff --git a/src/db/User.h b/src/db/User.h new file mode 100644 index 0000000000000000000000000000000000000000..d031baac0bab4dc11a167d66e40a947331c300bc --- /dev/null +++ b/src/db/User.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2017 Kevin Whitaker + * + * 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 +#include + +class User +{ +public: + std::string username; + std::string passwordHash; + std::string passwordSalt; + bool isDisabled; + bool isAdmin; + std::string loginCookieToken; + + template + 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 diff --git a/src/db/UserAction.h b/src/db/UserAction.h new file mode 100644 index 0000000000000000000000000000000000000000..ec18747203514d616372abccc201493e98300d1c --- /dev/null +++ b/src/db/UserAction.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2017 Kevin Whitaker + * + * 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 +#include +#include +#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 + 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 diff --git a/src/ui/LoginInterface.cpp b/src/ui/LoginInterface.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c70ba6bf066bb906b985f9fd649e5b417344df0a --- /dev/null +++ b/src/ui/LoginInterface.cpp @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2017 Kevin Whitaker + * + * 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 + +LoginInterface::LoginInterface(WebInterface* app) +{ + loginButton = new Wt::WPushButton("Login"); + loginButton->clicked().connect(app, &WebInterface::loginCompleted); + setContentAlignment(Wt::AlignmentFlag::AlignCenter); + addChild(loginButton); +} diff --git a/src/ui/LoginInterface.h b/src/ui/LoginInterface.h new file mode 100644 index 0000000000000000000000000000000000000000..0b0c63a8ec2a966480e9a2810f1de3a7d4fa7c7f --- /dev/null +++ b/src/ui/LoginInterface.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2017 Kevin Whitaker + * + * 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 +#include +#include "../WebInterface.h" + +class LoginInterface : public Wt::WContainerWidget +{ +public: + LoginInterface(WebInterface* app); +private: + Wt::WPushButton* loginButton; +}; + +#endif // LOGININTERFACE_H