Last active
August 29, 2015 13:57
-
-
Save rowntreerob/9535785 to your computer and use it in GitHub Desktop.
parse add user to role
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*global define*/ | |
define(['marionette', 'vent', 'tpl!../templates/header.html', '../collections/UserList', | |
'../models/User', '../models/Role', 'Parse'], function (Marionette, vent, header, UserList, User, Role, Parse) { | |
"use strict"; | |
return Marionette.ItemView.extend({ | |
template : header, | |
ui : { | |
input : '#new-todo' | |
}, | |
// events : { | |
// 'keypress #new-todo': 'onInputKeypress' | |
// }, | |
// get event newusercreated come back here and restore user session | |
// vent.trigger('personview:adduser', {username: username, password: password}); | |
initialize: function (options) { | |
_.bindAll(this, 'addUser'); | |
var that = this; | |
var userSave =""; | |
if (this.options.parentRole) { | |
var parentRole = this.options.parentRole; | |
var muser = Parse.User.current() | |
var userToken = muser._sessionToken; | |
} | |
vent.on('personview:adduser', function (user) { | |
that.addUser(user); | |
}); | |
}, | |
//TODO Polymorphic input (new Group, new student, new group in group | |
onInputKeypress : function(e) { | |
var ENTER_KEY = 13; | |
var name = this.ui.input.val().trim(); | |
if (e.which === ENTER_KEY && name) { | |
this.collection.create({ | |
name: name, | |
ACL: new Parse.ACL(Parse.User.current()) | |
}); | |
this.ui.input.val(''); | |
} | |
}, | |
//CTX parent role , child role Name to lookup | |
// | |
createRoleOnEnter: function(e) { | |
var that = this, p; | |
var ENTER_KEY = 13; | |
var childName = this.ui.input.val().trim(); | |
var parentName = this.options.parentRole.get("name"); | |
if (e.which === ENTER_KEY && childName) { | |
p = Parse.Cloud.run('addrole', {"parentName":parentName, "childName":childName}).then(function(result) { | |
that.addOne(new Role(result)); | |
}, function(error) { | |
// self.$(".section .error").html(error.message).show(); | |
console.log("DNF role with that name" +error.message); | |
}); | |
this.ui.input.val(''); | |
}; | |
}, | |
//from layout.js that passes in events to this module's constructor | |
//TODO get the usercollection from a relationQuery | |
//interface parentID, userID , collection of users | |
createUserOnEnter: function(e) { | |
console.log("createUseronEnter"); | |
var self = this; | |
var user = this.ui.input.val(); | |
var _error = { | |
"error": -1004, | |
"message":"User relation not added to role" | |
}; | |
if (e.keyCode != 13) return; | |
self.$(".error").hide(); | |
var query = new Parse.Query(Parse.User); | |
query.equalTo("username", user); | |
query.first().then(function(students) { | |
if (typeof students === "undefined") { | |
return Parse.Promise.error("DNF student"); | |
} else{ | |
return students.fetch(); | |
} | |
}).then(function(result) { | |
//CRUD role upd with 'users' relation ADD | |
var that = this; self.userObj = result; | |
var mrol = self.options.parentRole; | |
mrol.getUsers().add(result); | |
mrol.getACL().setRoleReadAccess(mrol, true); | |
return mrol.save(); | |
}).then(function(result) { | |
console.log("addUserRelation to Role OK"); | |
//event obj self.userObj | |
vent.trigger('header:adduser', self.userObj); | |
}, | |
function(error) { | |
console.log("Error - addUserRelation to Role "); | |
var muser = { name: user , password: ""}; | |
vent.trigger('header:dnfuser', muser); | |
//TODO get a new view and load the modal dialog dont need the user | |
//new view with a model this view will go into the modal | |
// self.onDnfUser(user); | |
}); | |
this.ui.input.val(''); | |
}, | |
addOne: function(role) { | |
vent.trigger('header:addrole', role); //newRoleRelation in RRListComp | |
}, | |
onDnfUser : function (user, role) { | |
console.log("Header:Dnf user"); | |
var signUpOptions = { | |
model : user, | |
// role : role | |
}; | |
// var addPersonVw = new AddPersonView(signUpOptions); | |
// console.log("Header.onDnfUser tokn " +this.userToken); | |
}, | |
//TODO rm this not need | |
addUser : function (user) { | |
var muser = user; | |
var isAuthenticated = Parse.User.current(); | |
if(isAuthenticated){ | |
var username = muser.username; | |
var password = muser.password; | |
var name = muser.username; | |
//TODO this signup switches current.user ctx so that the access posting the upd on role fails | |
Parse.User.signUp(username, password,{ name: name }).then | |
(function(result) { | |
console.log("NewUser CRUD OK"); | |
}, | |
function(error) { | |
// self.$(".error").html("Invalid2 user ").show(); | |
console.log("Error - LoginVw addUserRelation to Role "); | |
// var muser = new User({ name: user , password: ""}); | |
// vent.trigger('header:dnfuser', muser, self.options.parentRole); | |
}); | |
// this.$(".signup-form button").attr("disabled", "disabled"); | |
} | |
} | |
}); | |
}); | |
// header 'addUser' handler below: | |
/*global define*/ | |
define(['marionette', 'tpl!../templates/roleUserListCompositeView.html', 'tpl!../templates/emptyRoleListView.html', 'vent', './RoleItemView', '../collections/RoleList', '../collections/UserList'], | |
function (Marionette, rolesUsersCompositeView, EmptyRoleListView, vent, ItemView, RoleList, UserList) { | |
"use strict"; | |
return Marionette.CompositeView.extend({ | |
template : rolesUsersCompositeView, | |
itemView : ItemView, | |
itemViewContainer : '#todo-list', | |
ui : { | |
// toggle : '#toggle-all' | |
}, | |
itemViewOptions: function( item, index){ | |
return { parentName: this.model } | |
}, | |
events : { | |
"click .usrgrp" : "roleRelation" | |
}, | |
// TODO how to add to userCollection when input- in header fires | |
// model is role passedin use to get relation query in collection.query and fetch | |
initialize: function () { | |
var that = this; | |
// console.log("RolRolListCvw.init " + this.model.id +" " +this.model.get("name")); | |
vent.on('header:adduser', function (user) { | |
that.addUser(user); | |
}); | |
// vent.trigger('roleitem:rmuser', mchild); | |
vent.on('roleitem:rmuser', function (user) { | |
that.removeUser(user); | |
}); | |
//fm header.js trying to add userToRole... user not found so create it | |
// vent.on('header:dnfuser', function (user, role) { | |
// that.onDnfUser(user, role); | |
// }); | |
this.collection = new UserList(); | |
this.model = this.options.model; // check whether user or role shoul b user | |
var relation = this.model.relation("users"); | |
this.collection.query = relation.query(); | |
var role = this.model.id; | |
var rolename = this.model.get("name"); | |
this.collection.fetch(); | |
}, | |
onRender : function() { | |
vent.trigger('roleList:filter', 'List Users in Group'); | |
}, | |
addUser : function(user) { | |
this.collection.add(user); | |
}, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment