]> source.dussan.org Git - nextcloud-server.git/commitdiff
Made the "change password" thingie in settings working
authorJakob Sack <kde@jakobsack.de>
Mon, 18 Apr 2011 13:07:14 +0000 (15:07 +0200)
committerJakob Sack <kde@jakobsack.de>
Mon, 18 Apr 2011 13:07:14 +0000 (15:07 +0200)
files/ajax/rename.php
files/ajax/upload.php
lib/User/database.php
settings/ajax/changepassword.php [new file with mode: 0644]
settings/css/settings.css [new file with mode: 0644]
settings/index.php
settings/js/main.js [new file with mode: 0644]
settings/templates/index.php

index 86cb7944a88f7822c469b058704fed3686395659..65763fceb94db16ecd167d1d28fc22225c93ee16 100644 (file)
@@ -8,7 +8,7 @@ header( "Content-Type: application/jsonrequest" );
 
 // Check if we are a user
 if( !OC_USER::isLoggedIn()){
-       echo json_encode( array( "status" => "error", "data" => "Authentication error" ));
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" )));
        exit();
 }
 
index 959794913b90327d0a7855e169779a0bff5da59e..194d84f4be2749c555881d7a6442ec56b0f205aa 100644 (file)
@@ -10,7 +10,7 @@ header( "Content-Type: text/plain" );
 
 // Check if we are a user
 if( !OC_USER::isLoggedIn()){
-       echo json_encode( array( "status" => "error", "data" => "Authentication error" ));
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" )));
        exit();
 }
 
index 3abaf9e1f41442577bf10f41af8b5350bcb7a0a8..eeabb592c227814d01206309867402c96cc1a366 100644 (file)
@@ -156,15 +156,15 @@ class OC_USER_DATABASE extends OC_USER_BACKEND {
                $query = OC_DB::prepare( "SELECT * FROM `*PREFIX*users` WHERE uid = ?" );
                $result = $query->execute( array( $uid ));
 
-               if ( $result->numRows() > 0 ){
-                       return false;
-               }
-               else{
+               if( $result->numRows() > 0 ){
                        $query = OC_DB::prepare( "UPDATE *PREFIX*users SET password = ? WHERE uid = ?" );
                        $result = $query->execute( array( sha1( $password ), $uid ));
 
                        return true;
                }
+               else{
+                       return false;
+               }
        }
 
        /**
diff --git a/settings/ajax/changepassword.php b/settings/ajax/changepassword.php
new file mode 100644 (file)
index 0000000..1a9ad73
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+// Init owncloud
+require_once('../../lib/base.php');
+
+// We send json data
+header( "Content-Type: application/jsonrequest" );
+
+// Check if we are a user
+if( !OC_USER::isLoggedIn()){
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" )));
+       exit();
+}
+
+// Get data
+if( !isset( $_POST["password"] ) && !isset( $_POST["oldpassword"] )){
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "You have to enter the old and the new password!" )));
+       exit();
+}
+
+// Check if the old password is correct
+if( !OC_USER::checkPassword( $_SESSION["user_id"], $_POST["oldpassword"] )){
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Your old password is wrong!" )));
+       exit();
+}
+
+// Change password
+if( OC_USER::setPassword( $_SESSION["user_id"], $_POST["password"] )){
+       echo json_encode( array( "status" => "success", "data" => array( "message" => "Password changed" )));
+}
+else{
+       echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to change password" )));
+}
+
+?>
diff --git a/settings/css/settings.css b/settings/css/settings.css
new file mode 100644 (file)
index 0000000..23561ec
--- /dev/null
@@ -0,0 +1,2 @@
+#passworderror{display:none;}
+#passwordchanged{display:none;}
\ No newline at end of file
index 9bf89145cc3250b82e8a70904478504484b348df..1a442eca8110028fa5668fd315f7ae56155fc34d 100644 (file)
@@ -7,12 +7,19 @@ if( !OC_USER::isLoggedIn()){
     exit();
 }
 
+// Highlight navigation entry
 OC_APP::setActiveNavigationEntry( "settings" );
-$tmpl = new OC_TEMPLATE( "settings", "index", "admin");
+OC_UTIL::addScript( "settings", "main" );
+OC_UTIL::addStyle( "settings", "settings" );
+
+// calculate the disc space
 $used=OC_FILESYSTEM::filesize('/');
 $free=OC_FILESYSTEM::free_space();
 $total=$free+$used;
 $relative=round(($used/$total)*100);
+
+// Return template
+$tmpl = new OC_TEMPLATE( "settings", "index", "admin");
 $tmpl->assign('usage',OC_HELPER::humanFileSize($used));
 $tmpl->assign('total_space',OC_HELPER::humanFileSize($total));
 $tmpl->assign('usage_relative',$relative);
diff --git a/settings/js/main.js b/settings/js/main.js
new file mode 100644 (file)
index 0000000..e05fc68
--- /dev/null
@@ -0,0 +1,21 @@
+$(document).ready(function(){
+       $("#passwordbutton").click( function(){
+               // Serialize the data
+               var post = $( "#passwordform" ).serialize();
+               $('#passwordchanged').hide();
+               $('#passworderror').hide();
+               // Ajax foo
+               $.post( 'ajax/changepassword.php', post, function(data){
+                       if( data.status == "success" ){
+                               $('#pass1').val('');
+                               $('#pass2').val('');
+                               $('#passwordchanged').show();
+                       }
+                       else{
+                               $('#passworderror').html( data.data.message );
+                               $('#passworderror').show();
+                       }
+               });
+               return false;
+       });
+} );
index 33d27922d8f0c0d0a832af3b8a2aa03f92873a55..2d5e9d9140fcc8de707e7abbafb700857f6b2cf2 100644 (file)
@@ -6,23 +6,25 @@
        </fieldset>
 </form>
 
-<form id="user_settings">
+<form id="passwordform">
        <fieldset>
-       <legend>User settings</legend>
+       <legend>Change Password</legend>
+       <div id="passwordchanged">You're password got changed</div>
+       <div id="passworderror"></div>
        <p>
-               <label for="email">Email :</label>
-               <input type="text" id="email" name="email" value="user@example.net" />
+               <label for="pass1">Old password:</label>
+               <input type="password" id="pass1" name="oldpassword" />
        </p>
        <p>
-               <label for="pass1">New password :</label>
-               <input type="password" id="pass1" name="pass1" /> 
+               <label for="pass2">New password :</label>
+               <input type="password" id="pass2" name="password" />
        </p>
        <p>
-               <label for="pass2">Confirm new password :</label>
-               <input type="password" id="pass2" name="pass2" /> 
+               <input type="checkbox" id="show" name="show" />
+               <label for="show">Show new password</label>
        </p>
        <p class="form_footer">
-               <input class="prettybutton" type="submit" value="Save" />
+               <input id="passwordbutton" class="prettybutton" type="submit" value="Save" />
        </p>
        </fieldset>
 </form>