hue_adduser(options, callback)
Create a Hue user.
Options include:
url
username
password
groups
first_name
last_name
email
is_superuser
admin.username
admin.password
Source Code
module.exports = ({options}) ->
params = options.config
throw Error "Required option 'url'" unless params.url
throw Error "Required option 'username'" unless params.username
throw Error "Required option 'password'" unless params.password1
throw Error "Required option 'groups'" unless params.groups
throw Error "Required option 'admin'" unless params.admin
COOKIES = "cookies.txt"
admin = params.admin
groups = params.groups
hue_url = params.url
delete params.admin
delete params.groups
delete params.url
url_params = ''
for prop,value of params
url_params += "&#{prop}=#{value}"
url_params += "&password2=#{params.password1}&is_active=true"
url_params += "&groups=#{groups.join("&groups=")}"
@system.execute
cmd: """
URL="#{hue_url}"
LOGIN_URL=$URL/accounts/login/?next=/
POST_URL=$URL/useradmin/users/new
YOUR_USER='#{admin.username}'
YOUR_PASS='#{admin.password}'
CURL_BIN="curl -s -k -c #{COOKIES} -b #{COOKIES} -e $LOGIN_URL"
echo "AUTH: GET CSRF_TOKEN ..."
$CURL_BIN $LOGIN_URL > /dev/null
CSRF_TOKEN="$(grep csrftoken #{COOKIES} | sed 's/^.*csrftoken\s*//' | tr -d ' ' | tr -d '\t')"
echo $CSRF_TOKEN
echo " PERFORM LOGIN ..."
echo "$CURL_BIN -d csrfmiddlewaretoken=$CSRF_TOKEN&username=$YOUR_USER&password=$YOUR_PASS -X POST $LOGIN_URL"
$CURL_BIN -d "csrfmiddlewaretoken=$CSRF_TOKEN&username=$YOUR_USER&password=$YOUR_PASS" -X POST $LOGIN_URL
CSRF_TOKEN="$(grep csrftoken #{COOKIES} | sed 's/^.*csrftoken\s*//' | tr -d ' ' | tr -d '\t')"
echo $CSRF_TOKEN
echo " CREATING USER ..."
echo "$CURL_BIN --header X-CSRFToken:$CSRF_TOKEN -d csrfmiddlewaretoken=$CSRF_TOKEN#{url_params} -X POST $POST_URL"
RESPONSE=$($CURL_BIN --header "X-CSRFToken:$CSRF_TOKEN" -d "csrfmiddlewaretoken=$CSRF_TOKEN#{url_params}" -X POST $POST_URL)
if echo $RESPONSE | grep -q "CSRF token missing or incorrect\|403 Forbidden\|CSRF Error";then echo "SOMETHING WRONG WITH CSRF TOKEN" && exit 2;fi
if echo $RESPONSE | grep -q "html";then echo "SOMETHING WRONG WITH THE PARAMATERS" && exit 2;else echo "USER #{params.username} CREATED";fi
echo " LOGOUT"
"""
trap: true
@system.remove
source: COOKIES
module.exports.register = ->
@registry.register 'hue_adduser', module.exports unless @registry.registered 'hue_adduser'