In another article, we wrote about how to change a user’s password using Backendless Console. There are also ways to change a user’s password using API. In this post, we will review the API that can be used to change the password if a user can log in.
A different approach is needed when a user cannot log in for the reason that he/she forgot their password. That scenario, requiring a temporary password be created, is discussed here.
Backendless.UserService.login( "spidey@backendless.com", "greeng0blin", new AsyncCallback<BackendlessUser>()
{
@Override
public void handleResponse( BackendlessUser user )
{
user.setPassword( "MyNewPassword" );
Backendless.Data.of( BackendlessUser.class ).save( user, new AsyncCallback<BackendlessUser>()
{
@Override
public void handleResponse( BackendlessUser backendlessUser )
{
System.out.println( "User password has been changed" );
}
@Override
public void handleFault( BackendlessFault backendlessFault )
{
System.out.println( "Server reported an error - " + backendlessFault.getMessage() );
}
} );
}
@Override
public void handleFault( BackendlessFault backendlessFault )
{
System.out.println( "Server reported an error - " + backendlessFault.getMessage() );
}
} );
val user = Backendless.UserService.login("spidey@backendless.com", "greeng0blin")
user.password = "myNewPassword"
Backendless.Data.of(BackendlessUser::class.java).save(user, object : AsyncCallback {
override fun handleResponse(response: BackendlessUser?) {
Log.i(TAG, "User password has been changed")
}
override fun handleFault(fault: BackendlessFault?) {
Log.e(TAG, fault?.message)
}
})
[Backendless.shared.userService loginWithIdentity:@"spidey@backendless.com" password:@"greeng0blin" responseHandler:^(BackendlessUser *loggedInUser) {
loggedInUser.password = @"MyNewPassword";
[[Backendless.shared.data of:[BackendlessUser class]] updateWithEntity:loggedInUser responseHandler:^(BackendlessUser *updatedUser) {
NSLog(@"User password has been changed");
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
Backendless.shared.userService.login(identity: "spidey@backendless.com", password: "greeng0blin", responseHandler: { loggedInUser in
loggedInUser.password = "MyNewPassword"
Backendless.shared.data.of(BackendlessUser.self).update(entity: loggedInUser, responseHandler: { updatedUser in
print("User password has been changed")
}, errorHandler: { fault in
print("Error:\(fault.message ?? "")")
})
}, errorHandler: { fault in
print("Error:\(fault.message ?? "")")
})
const Backendless = require('backendless')
/*
Or use `import Backendless from 'backendless'` for client side.
If you don't use npm or yarn to install modules, you can add the following line
<script src="//api.backendless.com/sdk/js/latest/backendless.min.js"></script>
to your index.html file and use the global Backendless variable.
*/
Backendless.initApp('YOUR_APP_ID', 'YOUR_JS_API_KEY')
const onLoginSuccess = user => {
user.password = 'MyNewPassword'
return Backendless.UserService.update(user)
}
const onPasswordUpdateSuccess = user => {
console.log('User password has been changed')
}
const onError = error => {
console.error('Server reported an error: ', error.message)
console.error('error code: ', error.code)
console.error('http status: ', error.status)
}
Backendless.UserService.login('spidey@backendless.com', 'greeng0blin')
.then(onLoginSuccess)
.then(onPasswordUpdateSuccess)
.catch(onError)
var user = await Backendless.UserService.login("spidey@backendless.com", "greeng0blin");
user.password = "MyNewPassword";
Backendless.Data.of("Users").save(user.toJson()).then((response) => print("User password has been changed"));
Notice the sample shows user login first. This is required as the user identity must be established for the subsequent password update call to go through.