From 08f4428e2855ea2799f4249aa06f0b02e91b9cfb Mon Sep 17 00:00:00 2001 From: lukeIam Date: Wed, 16 Oct 2013 20:13:38 +0200 Subject: [PATCH] Edit UserRoles over the webserver --- .../ClientServerLib/CWebservice.cs | 36 ++++++++++ Vocaluxe/Website/index.html | 37 +++++++++- Vocaluxe/Website/js/main.js | 67 ++++++++++++++++++- 3 files changed, 136 insertions(+), 4 deletions(-) diff --git a/ClientServerLib/ClientServerLib/CWebservice.cs b/ClientServerLib/ClientServerLib/CWebservice.cs index 9e626de1..5bbfa3a9 100644 --- a/ClientServerLib/ClientServerLib/CWebservice.cs +++ b/ClientServerLib/ClientServerLib/CWebservice.cs @@ -119,6 +119,22 @@ namespace ServerLib SongInfo[] getAllSongs(); #endregion + + #region user management + + [OperationContract] + [WebInvoke(Method = "GET", + ResponseFormat = WebMessageFormat.Json, + UriTemplate = "/getUserRole?profileId={profileId}")] + int getUserRole(int profileId); + + [OperationContract] + [WebInvoke(Method = "GET", + ResponseFormat = WebMessageFormat.Json, + UriTemplate = "/setUserRole?profileId={profileId}&userRole={userRole}")] + void setUserRole(int profileId, int userRole); + + #endregion } class CWebservice : ICWebservice @@ -386,5 +402,25 @@ namespace ServerLib } #endregion + + #region user management + + public int getUserRole(int profileId) + { + return CServer.GetUserRole(profileId); + } + + public void setUserRole(int profileId, int userRole) + { + Guid sessionKey = getSession(); + if (!SessionControl.requestRight(sessionKey, UserRights.EditAllProfiles)) + { + WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Forbidden; + return; + } + CServer.SetUserRole(profileId, userRole); + } + + #endregion } } diff --git a/Vocaluxe/Website/index.html b/Vocaluxe/Website/index.html index 54ead8a1..c3a400da 100644 --- a/Vocaluxe/Website/index.html +++ b/Vocaluxe/Website/index.html @@ -83,10 +83,10 @@
  • - +

    Administration

    -

    Configure options and rights

    +

    Configure user rights

  • @@ -231,6 +231,39 @@ +
    +
    +

    All profiles

    +
    + + +
    +
      +
      + +
      + + +
      +
      +

      Profile

      +
      + + +
      +
      + + + + + +
      + Save +
      + +
      + +
      diff --git a/Vocaluxe/Website/js/main.js b/Vocaluxe/Website/js/main.js index 1df294ff..36c5c846 100644 --- a/Vocaluxe/Website/js/main.js +++ b/Vocaluxe/Website/js/main.js @@ -59,7 +59,7 @@ function initPageLoadHandler() { $.mobile.loading('show', { text: 'Uploading profile...', textVisible: true - }); + }); $.ajax({ url: "sendProfile", @@ -69,7 +69,7 @@ function initPageLoadHandler() { headers: { "session": sessionId }, data: JSON.stringify(dataToUpload), success: function (msg) { - + history.back(); } }).always(function () { $.mobile.loading('hide'); @@ -298,6 +298,67 @@ function initPageLoadHandler() { handleGetAllSongs() } }); + + //pageLoadHandler for selectUserAdmin + $(document).on('pagebeforeshow', '#selectUserAdmin', function () { + var promise = $.ajax({ + url: "getProfileList", + headers: { "session": sessionId } + }).done(function (data) { + $('#selectUserAdminList').children().remove(); + + function handleSelectUserAdminLineClick(e) { + profileIdRequest = parseInt(e.currentTarget.id.replace("SelectUserAdminLine_", "")); + $.mobile.changePage("#displayUserAdmin", { transition: "slidefade" }); + } + + for (var profile in data) { + $('
    • ' + data[profile].PlayerName + '

      Click here to edit roles for ' + data[profile].PlayerName + '

    • ') + .appendTo('#selectUserAdminList') + .click(handleSelectUserAdminLineClick); + } + + $('#selectUserAdminList').listview('refresh'); + }); + + // Save promise on page so the transition handler can find it. + $(this).data('promise', promise); + }); + + //pageLoadHandler for displayUserAdmin + $(document).on('pagebeforeshow', '#displayUserAdmin', function () { + var promise = $.ajax({ + url: "getUserRole?profileId=" + profileIdRequest, + headers: { "session": sessionId } + }).done(function (result) { + $('#roleAdministrator').prop("checked", ((result & 0x01) != 0)).checkboxradio("refresh"); + + $('#btnRoleSave').unbind('click').click(function () { + $('#content').wrap('
      '); + $.mobile.loading('show', { + text: 'Save...', + textVisible: true + }); + + var role = 0; + if ($('#roleAdministrator').prop("checked")) { + role = (role | 0x01); + } + $.ajax({ + url: "setUserRole?profileId=" + profileIdRequest + "&userRole=" + role, + headers: { "session": sessionId } + }).done(function (result) { + $.mobile.loading('hide'); + $('#content').unwrap(); + history.back(); + }); + }); + }); + + // Save promise on page so the transition handler can find it. + $(this).data('promise', promise); + }); + } function initLoginPageHandler() { @@ -419,6 +480,8 @@ function initMainPageHandler() { $('#capture').click(); }); + + } function initKeyboardPageHandler() {