diegopamio / diegopamio/angular-sails-bind

Binding doesn't work on some models possibly with HTTP POST

Open
#27 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
135
Forks
23
PR merge metrics
No merged PRs in 30d

Description

This might be an issue with Sails, or my configuration.

However in my controller I am binding:

``` javascript
$sailsBind.bind("user", $scope)
$sailsBind.bind("task", $scope)

```

When I am using the register function on the controller updates are not being sent. I can see socket messages being pushed to the task object.

the register function is being called via HTTP POST instead of a socket call.

Task works, user does not.

User model:

``` javascript
var User = {
// Enforce model schema in the case of schemaless databases
schema: true,

attributes: {
groups: {
collection: 'groups',
via: 'members',
required: true
},
username : { type: 'string', unique: true, required: true },
email : { type: 'email', unique: true, required: true },

passports : { collection: 'Passport', via: 'user' }
// Groups

}
};

module.exports = User;

```

User controller:

``` javascript
/**
* UserController
*
* @description :: Server-side logic for managing Users
* @help :: See http://links.sailsjs.org/docs/controllers
*/

module.exports = {

session: function(req, res) {

res.json({
success: true
});
},

//expose a method for angular to be able to see if we are logged in
isLoggedIn: function(req,res){

//TODO: make sure that only the clients with the right session get the broadcast
//sails.sockets.broadcast("authNotification" , "authorized",{socketId: req.socket.id, user: req.user} );

res.json({sessionID: req.session.sessionID, roles: req.session.roles, user: req.user} );
//res.json(req.isAuthenticated() ? {sessionID: req.sessionID, user: req.user} : 0);
},
//expose a method for angular to be able to see if we are logged in
sayHi: function(req,res){
sails.sockets.broadcast("authNotification" , "message", {message: "onLogin"} );
sails.sockets.broadcast("authNotification" , "message", {message: "hello3"} );
res.json({result:"sent"});
},
sendHello: function(req,res) {
//req.sessionID
sails.io.sockets.in('asdf').emit("eventName", {data:true});
//sails.sockets.broadcast.to("asdf").emit('loggedOut', {loggedOff: 'true'});

res.json({
sessionid: req.sessionID,
message: "sent"
})

},
register: function(req,res){

//associate group
Groups.findOrCreate({
groupName: 'user'
}, {
groupName: 'user',
description: 'Generic user'
}).exec(function createFindCB(err, userGroup) {
//Check password for equality
var password = req.param('password');
var confirmation = req.param('confirmation');
//TODO: enfore better passsword enforcement
if(!password){
res.json({err: { message: "You must enter a password" }});
} else if (password == confirmation){
var userObj = {
username: req.param('username'),
email: req.param('email'),
groups: [userGroup.id]
};

//Create user
User.create(userObj, function userCreated(err, user) {
if (err) {
res.json({
err: err
});
} else {
//Associate passport ( password )
//TODO: include other authentication mechanisms
Passport.create({
protocol: 'local',
password: password,
user: user.id
}, function (err, passport) {
if (err){
User.destroy(user.id, function deleteCB(deleteErr){
sails.log(deleteErr);
});
res.json({err:err});
console.log(err);
} else {
res.json({success: true});
}
});

}
});
} else {
res.json({err: { message: "Passwords do not match" }});
}

});

}

};
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.